解决方案:(([^ - ] + - )hello | ^ hello)( - 。+ | $)
我想使用正则表达式来匹配句子。规则是:
hello
必须在一个句子中-
跟在hello
后面或前面-
,那么-
之前必须有一些内容或跟随hi1-hello-hi2
hello
hello-hi1
正则表达式匹配的句子的例子:
hi1-hihello-hi2
hihello
hellohi
hellohi-hi2
正则表达式的例子应该不匹配:
(.*-)?hello(-.*)?
我已尝试{{1}}等等,但没有运气。
我使用re.match()方法
答案 0 :(得分:1)
你快到了。只需使用字边界\b
来匹配单词和非单词字符,并将*
更改为+
,以匹配一个或多个字符。
^(?:.+-)?\bhello\b(?:-.+)?$
>>> import re
>>> s = """hi1-hello-hi2
... hello
... hello-hi1
... hi1-hihello-hi2
... hihello
... hellohi
... hellohi-hi2"""
>>> m = re.findall(r'^(?:.+-)?\bhello\b(?:-.+)?$', s, re.M)
>>> for i in m:
... print i
...
hi1-hello-hi2
hello
hello-hi1
答案 1 :(得分:1)
答案 2 :(得分:0)
对某人可能有用。
def hello_match(reg=r"\b(\w+-)?hello-?\b"):
Eg=["hi1-hello-hi2","hello","hello-hi1","hi1-hihello-hi2","hihello","hellohi","hellohi-hi2"]
for item in Eg:
if re.match(reg,item):
print item
hello_match()
## hi1-hello-hi2
## hello
## hello-hi1
答案 3 :(得分:0)
\b(\w+-)?hello(-\w+)?\b
hello-