假设我有以下文本:
*<string1>*<string2>*<string3>*
哪里*
表示除 <>
包围的内容之外的任何文本.
我希望能够捕获 string1
(第一次出现由字符 <>
包裹的文本)。
我尝试过使用:
r = re.compile('.*<(.*?)>.*(<.*?>)*.*')
r.search(my_text)
match = m.group(1)
但是没有成功。
我捕获 string1
没有问题如果文本中仅出现一次由 <>
包围的字符串,则使用更简单的正则表达式与:
r = re.compile('.*<.*?>.*')
但是当文本有多个正则表达式时,我无法识别正确的正则表达式。我不确定我是否理解 ()
的作用和?
对于这个问题正确。
如何捕获第一个 string1
在上面的例子中?
最佳答案
尝试这个正则表达式:
import re
my_text = "*<string1>*<string2>*<string3>*"
r = re.compile('(?<=\<)[^>]*')
print r.search(my_text).group(0)
print r.findall(my_text) #This will get an array of all matches.
(?<=\<)
是一个lookbehind,意思是检查匹配,但不捕获
关于python - 构建正则表达式以匹配 Python 中多个匹配项中的第一个匹配项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9576562/