我目前需要一个可以排除特定字符串但不包含该字符串的单词的正则表达式。例如,如果您有一个由0&1和#1组成的字符串。任何包含任意数量的1和0以及任何数量的0的字符串,除了3 0' s。
例如:
100100 pass
1000100 fail
00100 pass
000100 fail
0000100 pass
111000 fail
11100001 pass
我尝试了以下正则表达式,但它只接受可以从1开始但必须以0结尾的字符串。
^(1*([0]{0,2}|[0]{4,}))$
答案 0 :(得分:3)
答案 1 :(得分:1)
你可以创建一个接受你想要的模式的正则表达式,但它会很复杂。如果您创建负正则表达式.*(1|^)000(1|$).*
并测试您的字符串是否与此正则表达式不匹配,则会更容易。
这是示例python代码:
import re
r = re.compile("(1|^)000(1|$)")
tests = [
"100100", "1000100", "00100", "000100", "0000100", "111000", "11100001"
]
for t in tests:
print("%s %s" % (t, "fail" if r.search(t) else "pass"))
结果:
100100 pass
1000100 fail
00100 pass
000100 fail
0000100 pass
111000 fail
11100001 pass
答案 2 :(得分:0)