繁体   English   中英

Python 字符串的所有变体的正则表达式,但包含某些 substring

[英]Python Regex for all variations of string except containing certain substring

我需要捕获其中包含<ADDRESS: string 的代码行。 但是,我只想忽略具有SOME STR <ADDRESS:的行,即它在<ADDRESS:之前添加了SOME STR 该行前后可能还有其他词。

我尝试识别正则表达式,它似乎适用于用例: https://regex101.com/r/Lc5aKq/1

然而,我无法让它在 Python3 中工作。

方法:

def check(self, file):
        regex = r"\(?!.*(SOME STR)\).*\<ADDRESS:*"
        print(f'Content once: {file.content}')
        for match in re.finditer(regex, file.content, re.DOTALL):
            print(f'Regex: {regex}')
            print(f'Content: {file.content}')
            matched_str_offset = match.start(0)
            print(f'Matched offset: {matched_str_offset}')

当执行打印输入文件内容的方法print(f'Content once: {file.content}')的第二行时,我得到以下正确的文件内容,包括引号:

ADDR = "<ADDRESSS:qwerty>"

objA = PremilinaryObject(
    code_seg = """<ADDRESSS:qwerty> --paramX=valueX"""
)

objB = PremilinaryObject(
    code_seg = ADDR + """/xyz """
)

objC = PremilinaryObject(
    code_seg = """SOME STR <ADDRESSS:qwerty>/abc.par --paramX=valueX"""
)


objD = PremilinaryObject(
    bash_script= """SOME STR blah blah blah"""
)

但是,for 循环中的打印语句不会执行,这意味着他的正则表达式不匹配。 有什么建议我做错了吗?

您代码中的正则表达式与您的 regex101 示例不匹配。 当您使用r生成原始字符串时,您不需要对括号进行转义。

所以试试regex = r"(?..*(SOME STR)):*\<ADDRESS:*"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM