我想知道如何找到一个在slach和一个括号之间的字符串或']',例如。
data = "(AVP:SMTP/xx@xx.xx) R:AVP:SMS.0/+44648474 id:24"
data2 = "(AVP:SMTP/<xxx@xx.xx>) R:AVP:FAX.0/<thisword> id:25"
我的想法是仅为xx@xx.xx
获取+44648474
和data
,为xx@xx.xx
获取thisword
和data2
我试过这个正则表达式:
k = re.findall(r"/(\S+)",data2)
但它会返回<xxx@xx.xx>)
和<thisword>
我想要的是 xx@xx.xx 和 thisword
答案 0 :(得分:1)
这个有效。
import re
data = "(AVP:SMTP/xx@xx.xx) R:AVP:SMS.0/+44648474 id:24"
data2 = "(AVP:SMTP/<xxx@xx.xx>) R:AVP:FAX.0/<thisword> id:25"
regex = re.compile(r"/<?([^>\s\)]+)")
print regex.findall(data)
print regex.findall(data2)
>>>
['xx@xx.xx', '+44648474']
['xxx@xx.xx', 'thisword']
这个正则表达式分解:
/
:/
字符。<?
:可选<
个字符。(
:启动捕获组。[^>\s\)]+
:捕获任何非>
,\s
(空白)或)
的内容。)
:关闭捕获组。答案 1 :(得分:1)
k = re.findall(r"(?<=/<)[^>]+(?=>)",data2)
这将确保匹配前的“/<
”,然后匹配非“>
”的所有内容至少一次,并在匹配后有“>
”时成功。