我的正则表达式语法没有返回正确的结果。我使用 github3.py 库从 GitHub 返回数据,该库在解析 md 文件的补丁键 ( https://developer.github.com/v3/pulls/#list-pull-requests-files ) 时返回三个可能的字符串。我已经阅读了正则表达式文档和几个线程,但我的语法中遗漏了一些内容。
string1 = '> [HELP.SELECTOR]'
string2 = '-> [HELP.SELECTOR]'
string3 = '+> [HELP.SELECTOR]'
我想打印 True 来表示与 string2
或 string3
的精确匹配,如果找到 string1
则打印 False。如果找到 string2
或 string3
,我的结果将返回 False。
for prs in repo.pull_requests():
search_string_found = 'False'
regex_search_string1 = re.compile(r"^\+>\s\[HELP.SELECTOR\]")
regex_search_string2 = re.compile(r"^->\s\[HELP.SELECTOR\]")
for data in repo.pull_request(prs.number).files():
match_text1 = regex_search_string1.search(data.patch)
match_text2 = regex_search_string2.search(data.patch)
if match_text1 is not None and match_text2 is not None:
search_string_found = 'True'
break
print('HELP.SELECTOR present in file: ', search_string_found)
最佳答案
由于您确认您的字符串可能不在字符串开头,因此您需要
regex_search_string = re.compile(r"[+-]>\s\[HELP\.SELECTOR\]")
for data in repo.pull_request(prs.number).files():
match_text = regex_search_string.search(data.patch)
if match_text:
search_string_found = 'True'
break
注意:
[+-]
匹配+
或-
,因为它是匹配范围/中的单个字符的字符类设置里面指定的+
不必转义-
不必转义re.search
返回匹配数据对象或None
,您需要在访问匹配/捕获的文本之前先检查它
[...]
内的 [...]
开头或结尾的 关于Python 正则表达式语句未返回正确的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37219663/