我想添加这两个修饰符:g - global , i - insensitive
这是我的脚本的一部分:
search_pattern = r"/somestring/gi"
pattern = re.compile(search_pattern)
queries = pattern.findall(content)
但是没用 修饰符按照本页 https://regex101.com/
最佳答案
首先,我建议您通过检查其所有资源和部分来研究 regex101.com 的功能。单击左侧的代码生成器链接时,您始终可以看到 Python(以及 PHP 和 JS)代码。
如何获取g
全局搜索行为?
如果您没有捕获组,Python 中的 findall
将为您匹配文本。因此,对于 r"somestring"
,findall
就足够了。
如果您有捕获组,但需要整个匹配,您可以使用 finditer
并访问 .group(0)
。
如何获得不区分大小写的行为?
i
修饰符可以在 pattern = re.compile(search_pattern , re.I)
.此外,您可以使用内联标志:pattern = re.compile("(?i)somestring")
。
关于正则表达式定界符
您应该使用 search_pattern = r"somestring"
而不是 search_pattern = r"/somestring/gi"
。这是因为标志作为单独的参数传递,并且所有操作都作为单独的 re
方法实现。
所以,你可以使用
import re
p = re.compile(r'somestring', re.IGNORECASE)
test_str = "somestring"
re.findall(p, test_str)
或者
import re
p = re.compile(r'(?i)(some)string')
test_str = "somestring"
print([(x.group(0),x.group(1)) for x in p.finditer(test_str)])
参见 IDEONE demo
关于python - 如何在 python 中向正则表达式添加修饰符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31916471/