【发布时间】:2020-12-25 06:29:05
【问题描述】:
我发现很难完成这个正则表达式。
以下正则表达式检查逗号分隔字符串的有效性:^(\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"
这是无效的,因为它是空格分隔的---它必须是逗号分隔的。
这是另一个例子:
invalid2 = "a, ,b, c, d"
这是无效的,因为有两个逗号;必须只有一个。
【问题讨论】:
-
我很困惑。你能提供一些不应该匹配的例子吗?
-
不会“组合”
/w和/W匹配所有内容? -
@Chris 我将在编辑中提供一些示例;例如,这不应该匹配,因为它是空格分隔的
a b, c, d -
@ScottHunter 我试图用反例来编辑问题;字符串应该用逗号分隔。
标签: python regex string match comma