正则表达式仅以 value1 开头,没有 value1\nvalue2
regex only start with value1 without 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
在您的模式中,您在 xml
之后立即使用否定前瞻 xml(?!process
。但由于它位于字符串的末尾,您可以在 \r?\nprocess
之前添加匹配换行符
请注意,如果 .xml
在字符串的末尾,则不必使点不贪心,并且必须转义点以按字面匹配它。
您还可以在 true 之后添加一个单词边界,以确保它不是较长单词的一部分。
^process\.args=spring.*\.xml(?!\r?\nprocess\.script=true\b)
例如
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']
正则表达式中的新功能,尝试在服务器上捕获字符串仅以 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
在您的模式中,您在 xml
之后立即使用否定前瞻 xml(?!process
。但由于它位于字符串的末尾,您可以在 \r?\nprocess
请注意,如果 .xml
在字符串的末尾,则不必使点不贪心,并且必须转义点以按字面匹配它。
您还可以在 true 之后添加一个单词边界,以确保它不是较长单词的一部分。
^process\.args=spring.*\.xml(?!\r?\nprocess\.script=true\b)
例如
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']