正则表达式:允许逗号分隔的字符串,包括字符和非字符
Regex: allow comma-separated strings, including characters and non-characters
我发现很难完成这个正则表达式。
以下正则表达式检查逗号分隔字符串的有效性:^(\w+)(,\s*\w+)*$
因此,这将匹配以下以逗号分隔的字符串:
import re
pattern = re.compile(r"^(\w+)(,\s*\w+)*$")
valid_string = "foo, bar, hey,friend, 56, 7, elephant"
pattern.match(valid_string)
然后,我可以对非字符执行相同的操作,使用 ^(\W+)(,\s*\W+)*$
,这将匹配:
import re
pattern = re.compile(r"^(\W+)(,\s*\W+)*$")
valid_string = "%, $, *, $$"
pattern.match(valid_string)
我想创建一个正则表达式来匹配包含特殊字符、连字符和下划线的字符串,例如
foo-bar, hey_friend, 56-8, 7_88, elephant$n
我如何“结合”/w
和 /W
来完成这个?
编辑:
以下是一些无效字符串的示例:
invalid1 = "aa, b, c d e"
这是无效的,因为它是 space 分隔的---必须用逗号分隔。
这是另一个例子:
invalid2 = "a, ,b, c, d"
这是无效的,因为有两个逗号;一定只有一个。
这是您需要的正则表达式吗?
r"^(\w+[\W_]\w+)(,\s*\w+[\W_]\w+)*$"
您可以使用
^[^\s,]+(?:,\s*[^\s,]+)*$
详情
^
- 字符串开头
[^\s,]+
- 除空格和逗号外的 1 个或多个字符
(?:,\s*[^\s,]+)*
- 出现 0 次或多次
,
- 逗号
\s*
- 0+ 个空白字符
[^\s,]+
- 除空格和逗号外的 1 个或多个字符
$
- 字符串结尾。
我发现很难完成这个正则表达式。
以下正则表达式检查逗号分隔字符串的有效性:^(\w+)(,\s*\w+)*$
因此,这将匹配以下以逗号分隔的字符串:
import re
pattern = re.compile(r"^(\w+)(,\s*\w+)*$")
valid_string = "foo, bar, hey,friend, 56, 7, elephant"
pattern.match(valid_string)
然后,我可以对非字符执行相同的操作,使用 ^(\W+)(,\s*\W+)*$
,这将匹配:
import re
pattern = re.compile(r"^(\W+)(,\s*\W+)*$")
valid_string = "%, $, *, $$"
pattern.match(valid_string)
我想创建一个正则表达式来匹配包含特殊字符、连字符和下划线的字符串,例如
foo-bar, hey_friend, 56-8, 7_88, elephant$n
我如何“结合”/w
和 /W
来完成这个?
编辑: 以下是一些无效字符串的示例:
invalid1 = "aa, b, c d e"
这是无效的,因为它是 space 分隔的---必须用逗号分隔。
这是另一个例子:
invalid2 = "a, ,b, c, d"
这是无效的,因为有两个逗号;一定只有一个。
这是您需要的正则表达式吗?
r"^(\w+[\W_]\w+)(,\s*\w+[\W_]\w+)*$"
您可以使用
^[^\s,]+(?:,\s*[^\s,]+)*$
详情
^
- 字符串开头[^\s,]+
- 除空格和逗号外的 1 个或多个字符(?:,\s*[^\s,]+)*
- 出现 0 次或多次,
- 逗号\s*
- 0+ 个空白字符[^\s,]+
- 除空格和逗号外的 1 个或多个字符
$
- 字符串结尾。