Python 正则表达式语句未返回正确的结果

标签 python regex

我的正则表达式语法没有返回正确的结果。我使用 github3.py 库从 GitHub 返回数据,该库在解析 md 文件的补丁键 ( https://developer.github.com/v3/pulls/#list-pull-requests-files ) 时返回三个可能的字符串。我已经阅读了正则表达式文档和几个线程,但我的语法中遗漏了一些内容。

string1 = '> [HELP.SELECTOR]'
string2 = '-> [HELP.SELECTOR]'
string3 = '+> [HELP.SELECTOR]'

我想打印 True 来表示与 string2string3 的精确匹配,如果找到 string1 则打印 False。如果找到 string2string3,我的结果将返回 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/

相关文章:

Python:转义字符串变量中的单引号和双引号的一些特殊方法

python - 用户在 python 3.4.3 版中正确回答后如何打印 "correct"

javascript - 正则表达式匹配mongodb中的整个单词

Python如何在字符串中每次有一大块数字时分割列

Python正则表达式: replace a letter if it is not a part of the word in a list

python - Tkinter python 多线程(避免 "Not Responding")

python - 在 argparse 中,是否可以对 'help' 以外的任何内容使用 -h 选项?

Python-关于并发使用 `multiprocess`的问题

sql - 使用正则表达式 Access UPDATE 查询

javascript - 如何从 javascript 中的正则表达式匹配调用函数