Python中的正则表达式,用于匹配单词后和尖括号之间的文本
给定此字符串:Python中的正则表达式,用于匹配单词后和尖括号之间的文本,python,regex,Python,Regex,给定此字符串: “分配的组用户IP地址” 如何提取“User”和Address后面括号中的内容。 也就是说,我想取上面的字符串并返回 (IwantThis, IalsoWantThis) 尝试此操作,它将匹配之间的所有文本: 你的正则表达式可能是这样的 "Group .*? User (.*?) IP .*? Address (.*?) assigned" 在这里,*?的意思是“尽可能少的字符,但尽可能多的字符是必要的,这样剩下的字符就适合了”。此外,它还覆盖任何字符(包括空格等)。使用()
“分配的组用户IP地址”
如何提取“User”和Address后面括号中的内容。
也就是说,我想取上面的字符串并返回
(IwantThis, IalsoWantThis)
尝试此操作,它将匹配
之间的所有文本:
你的正则表达式可能是这样的
"Group .*? User (.*?) IP .*? Address (.*?) assigned"
在这里,*?
的意思是“尽可能少的字符,但尽可能多的字符是必要的,这样剩下的字符就适合了”。此外,它还覆盖任何字符(包括空格等)。使用()
对所需零件进行分组。然后你就可以做了
>>> import re
>>> regex = "Group .*? User (.*?) IP .*? Address (.*?) assigned"
>>> match = re.match(regex, data)
如果match
不是None
,则模式匹配,您可以使用match.groups
访问组:
>>> IwantThis, IalsoWantThis = match.groups()
请注意,如果您的数据实际上包含括号(我假设它们是占位符),则需要将(.*)
替换为
,以便括号不匹配。对于未分组的零件(那些只有*?
没有括号的零件),这是不必要的,因为它们的数据从未被查询过
如果且仅当值(
、
、
和
)不包含空格,则不需要使用正则表达式,而可以使用字符串。拆分
:
>>> split_string = data.split()
>>> IwantThis = split_string[3]
>>> IalsoWantThis = split_string[7]
我的回答只是我前面的人已经说过的话的另一种选择
import re
searchText = "Group <stuffhere> User <IwantThis> IP <notimportant> Address <IalsoWantThis> assigned"
result = re.sub(".*User\\s+<([^>]+).*Address\\s+<([^>]+).*", "\\1 \\2", searchText)
print(result)
重新导入
searchText=“分配的组用户IP地址”
result=re.sub(“.*User\\s++).*Address\\s++).*”,“\\1\\2”,searchText)
打印(结果)
这里的正则表达式是
.*User\s+<([^>]+).*Address\s+<([^>]+).*
*用户\s++.*地址\s++)*
编辑:如果要返回元组,请尝试以下操作:
result2 = re.findall(".*User\\s+<([^>]+).*Address\\s+<([^>]+).*", searchText)
print(result2[0])
result2=re.findall(“.*User\\s++”).*Address\\s++*),searchText)
打印(结果2[0])
您的数据中是否有这些括号,或者它们只是占位符?
.*User\s+<([^>]+).*Address\s+<([^>]+).*
result2 = re.findall(".*User\\s+<([^>]+).*Address\\s+<([^>]+).*", searchText)
print(result2[0])