【发布时间】:2014-12-04 22:40:45
【问题描述】:
我想一次性找出所有包含字符'的单词。
例如:
'dog
dog'
do'g
我写了^.*'.*
但它不起作用。
【问题讨论】:
我想一次性找出所有包含字符'的单词。
例如:
'dog
dog'
do'g
我写了^.*'.*
但它不起作用。
【问题讨论】:
您不需要正则表达式,只需:
return your_string.count("'") == 1
或者如果你坚持在你的模块中导入re:
import re
return len(re.findall("'", my_string)) == 1
【讨论】:
import re
p = re.compile(r'^[^']*'[^']*$', re.IGNORECASE | re.MULTILINE)
test_str = "'dog\ndog'\ndo'g"
re.findall(p, test_str)
它确实有效。请看这里。
http://regex101.com/r/yR3mM3/52
你也可以试试
^(?=[^']*'[^']*$).*$
这使用前瞻来查找'。
【讨论】:
^[^']*'[^']*$。
【讨论】:
这样:
>>> import re
>>> re.findall(r"(?<![\w'])(?:\w+'\w*|'\w+)(?![\w'])", "'dog cat dog' m'a'ow do'g")
(?<![\w']) 是一个否定的lookbehind,检查之前没有单词字符或引号。
(?![\w']) 是一个否定的前瞻,检查后面没有单词字符或引号。
所以这些测试确保只有一个报价。
【讨论】: