kyr*_*nia 7 python regex python-2.7
我希望使用正则表达式来提取两个字符串之间的文本.我知道怎么做如果我想每次都在相同的字符串之间提取(并且无数问题要求这个,例如两个字符串之间的正则表达式匹配?),但是我想使用变化的变量来做,并且可能本身包含特殊字符正则表达式.(我想要任何特殊字符,例如*被视为文本).
例如,如果我有:
text = "<b*>Test</b>"
left_identifier = "<b*>"
right_identifier = "</b>
Run Code Online (Sandbox Code Playgroud)
我想创建正则表达式代码,这将导致以下代码运行:
re.findall('<b\*>(.*)<\/b>',text)
Run Code Online (Sandbox Code Playgroud)
这是<b\*>(.*)<\/b>我不知道如何动态创建的部分.
你可以这样做:
import re
pattern_string = re.escape(left_identifier) + "(.*?)" + re.escape(right_identifier)
pattern = re.compile(pattern_string)
Run Code Online (Sandbox Code Playgroud)
转义函数将自动转义特殊字符.例如:
>>> import re
>>> print re.escape("<b*>")
\<b\*\>
Run Code Online (Sandbox Code Playgroud)
您需要re.escape标识符:
>>> regex = re.compile('{}(.*){}'.format(re.escape('<b*>'), re.escape('</b>')))
>>> regex.findall('<b*>Text</b>')
['Text']
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2003 次 |
| 最近记录: |