我正在尝试在pythond中构造正则表达式以遵循规则,
:)
(请考虑这两个)例如。
接受单词
Hello
Hello-World
Hello_
Hello1
拒绝单词
_hello_
hello:
hello:)
我想出了正则表达式,
'(?!_)[\w-]+(?!:)'
它仍然接受所有单词,只是在统计信息中跳过_并且:最后,
有人能指出,我的正则表达式有什么问题 感谢
答案 0 :(得分:1)
您可以添加前导\b
。
words = ["Hello", "Hello-World", "Hello_", "Hello1", "_hello_", "hello:",
"hello:)" ]
import re
for word in words:
print re.findall(r'\b(?!_)[\w-]+(?!:)\b', word)
输出:
['Hello']
['Hello-World']
['Hello_']
['Hello1']
[]
[]
[]
来自http://docs.python.org/2/library/re.html
\b
匹配空字符串,但仅匹配单词的开头或结尾。单词被定义为字母数字或下划线字符的序列,因此单词的结尾由空格或非字母数字的非下划线字符表示。
答案 1 :(得分:0)
你所要求的内容仍然存在很多含糊之处,但这是你给出的样本集的另一个解决方案,在fiddle之前
^[A-Za-z-]+[_\d]?$