正则表达式仅以value1开头,没有value1 \ nvalue2

正则表达式的新功能,尝试在服务器上捕获字符串仅以value1开头的文件,但如果文件中有value1和下一个字符串value2,则我们不将其添加到输出中

keyword = re.findall(r'^process.args=spring.*?xml(?!process.script=true)',line,re.S)

有什么建议吗?

需要这样的输出:

xxxx xxx xxx xxx
process.args=spring.xxxx.xml
process.script=true
xxxx xxx xxx xxx\n```

output after regex : None

and 

```xx xx xxx xxx xxx
xxxx xxx xxx xxx
process.args=spring.xxxx.xml
xxxx xxx xxx xxx```

output after regex : process.args=spring.xxxx.xml

lszhangkun 回答:正则表达式仅以value1开头,没有value1 \ nvalue2

在您的模式中,紧接xml(?!process之后使用负前行xml。但是因为它在字符串的末尾,所以您可以在\r?\nprocess

之前添加一个换行符

请注意,如果.xml位于字符串的末尾,则不必使点成为非贪婪的点,而不必对点进行转义以使其在字面上匹配。

您还可以在true之后添加单词边界,以确保它不是较长单词的一部分。

^process\.args=spring.*\.xml(?!\r?\nprocess\.script=true\b)

Regex demo | Python demo

例如

import re

regex = r"^process\.args=spring.*\.xml(?!\r?\nprocess\.script=true\b)"

line = ("xxxx xxx xxx xxx\n"
    "process.args=spring.xxxx.xml\n"
    "process.script=true\n"
    "xxxx xxx xxx xxx\n\n\n"
    "xx xx xxx xxx xxx\n"
    "xxxx xxx xxx xxx\n"
    "process.args=spring.xxxx.xml\n"
    "xxxx xxx xxx xxx")

res = re.findall(regex,line,re.MULTILINE)
print(res)

输出

['process.args=spring.xxxx.xml']
本文链接:https://www.f2er.com/2890290.html

大家都在问