如何在python中获得正则表达式的第一个匹配项
我有一个字符串:如何在python中获得正则表达式的第一个匹配项,python,regex,python-3.x,Python,Regex,Python 3.x,我有一个字符串: Data=“a”Chain=“Y”Classification=”“Coreentity=“N”createdAt=“2018-05-05”name=“DM_KING”Hour=“23”Sub=“N” 我想提取DM\u KING 我不知道如何匹配最后一个“之后第一次出现的”,即名称之后的,我将正则表达式代码写成: Data=.*name=\” 我希望代码返回DM\u KING, DM_KING可以有任何长度我相信这应该可以: re.search('name="\w+', s)[
Data=“a”Chain=“Y”Classification=”“Coreentity=“N”createdAt=“2018-05-05”name=“DM_KING”Hour=“23”Sub=“N”
我想提取DM\u KING
我不知道如何匹配最后一个“
之后第一次出现的”
,即名称之后的,我将正则表达式代码写成:
Data=.*name=\”
我希望代码返回DM\u KING
,
DM_KING
可以有任何长度我相信这应该可以:
re.search('name="\w+', s)[0].split("\"")[1]
您可以将其与re.findall
一起使用。请参阅演示
如果字符串前后的时间是确定的,即名称后出现的小时,
这应该像任何长度名称的魅力一样:
regex = r"name=\"(.*)\" Ho"
试试这个正则表达式
[\s\S]*?name="([^"]*?)"
str.index(sub[,start[,end]])给出了字符串“str”中从“start”位置到“end”位置的子字符串“sub”的索引。如果您想从输入字符串中获得更多值,这将是一个使用:
:
name=“
按字面意思匹配字符name=“
区分大小写)
- 命名捕获组“name”
(?P[^”]+)
- 匹配列表中不存在的单个字符[
”
]
+
量词-在一次和无限次之间进行匹配,尽可能多地匹配,根据需要返回(贪婪)
“
按字面意思匹配字符”
您可以使用此正则表达式name=“([^”]+)”
此正则表达式搜索name=“
”,然后将除“
之外的所有找到的内容分组,并在看到“
后停止捕获。然后可以打印在group1中捕获的任何内容
Python代码
import re
str = 'Data="a" Chain="Y" Classification="" Coreentity="N" createdAt="2018-05-05" name="DM_KING" Hour="23" Sub="N"'
name = re.search(r'name="([^"]+)"', str)
print(name.group(1))
印刷品
DM_KING
虽然这可能回答了这个问题,但解释代码如何工作通常是最佳实践。
import re
data = 'Data="a" Chain="Y" Classification="" Coreentity="N" createdAt="2018-05-05" name="DM_KING" Hour="23" Sub="N"'
matcher = re.compile('name="(?P<name>[^"]+)"')
match = matcher.search(data)
print(match.group('name'))
DM_KING
import re
str = 'Data="a" Chain="Y" Classification="" Coreentity="N" createdAt="2018-05-05" name="DM_KING" Hour="23" Sub="N"'
name = re.search(r'name="([^"]+)"', str)
print(name.group(1))
DM_KING