从 python 中的字符串中提取子字符串的正则表达式
regex to extract a substring from a string in python
我们如何在 python.
中使用 re 从字符串中获取以下子字符串
string1 = "fgdshdfgsLooking: 3j #123"
substring = "Looking: 3j #123"
string2 = "Looking: avb456j #13fgfddg"
substring = "Looking: avb456j #13"
尝试过:
re.search(r'Looking: (.*#\d+)$', string1)
试试,
re.search(r'Looking: (.)*#(\d)+', string1)
- 它将匹配“正在查找:”
- 之后它将查找 0 个或多个任意字符
- 之后是一个“#”
- 和 1 个或多个数字
您需要从正则表达式中删除 $
:
re.search(r'Looking: (.*#\d+)', string1)
如果您还想要 re
到 return Looking
,则必须将其用括号括起来:
re.search(r'(Looking: (.*#\d+))', string1)
你的正则表达式大部分是正确的,你只需要删除 EOL(行尾)$
因为在某些情况下 string2
该模式不以 EOL 结尾,并且有一些额外的模式结束后的字符串。
import re
string1 = 'fgdshdfgsLooking: 3j #123'
string2 = 'Looking: avb456j #13fgfddg'
pattern = r'Looking: (.*?#\d+)'
match1 = re.search(pattern, string1)
match2 = re.search(pattern, string2)
print('String1:', string1, '|| Substring1:', match1.group(0))
print('String2:', string2, '|| Substring2:', match2.group(0))
输出:
String1: fgdshdfgsLooking: 3j #123 || Substring1: Looking: 3j #123
String2: Looking: avb456j #13fgfddg || Substring2: Looking: avb456j #13
应该可以,而且我已经通过使用 ?
来匹配尽可能少的次数,并根据需要进行扩展,从而避免将所有内容都匹配到第二个 #
,以防在字符串中的某个地方有第二个 #
后跟几位数字。
试试这个:
re.search("[A-Z]\w+:\s?\w+\s#\d+",string1)
我们如何在 python.
中使用 re 从字符串中获取以下子字符串string1 = "fgdshdfgsLooking: 3j #123"
substring = "Looking: 3j #123"
string2 = "Looking: avb456j #13fgfddg"
substring = "Looking: avb456j #13"
尝试过:
re.search(r'Looking: (.*#\d+)$', string1)
试试,
re.search(r'Looking: (.)*#(\d)+', string1)
- 它将匹配“正在查找:”
- 之后它将查找 0 个或多个任意字符
- 之后是一个“#”
- 和 1 个或多个数字
您需要从正则表达式中删除 $
:
re.search(r'Looking: (.*#\d+)', string1)
如果您还想要 re
到 return Looking
,则必须将其用括号括起来:
re.search(r'(Looking: (.*#\d+))', string1)
你的正则表达式大部分是正确的,你只需要删除 EOL(行尾)$
因为在某些情况下 string2
该模式不以 EOL 结尾,并且有一些额外的模式结束后的字符串。
import re
string1 = 'fgdshdfgsLooking: 3j #123'
string2 = 'Looking: avb456j #13fgfddg'
pattern = r'Looking: (.*?#\d+)'
match1 = re.search(pattern, string1)
match2 = re.search(pattern, string2)
print('String1:', string1, '|| Substring1:', match1.group(0))
print('String2:', string2, '|| Substring2:', match2.group(0))
输出:
String1: fgdshdfgsLooking: 3j #123 || Substring1: Looking: 3j #123
String2: Looking: avb456j #13fgfddg || Substring2: Looking: avb456j #13
应该可以,而且我已经通过使用 ?
来匹配尽可能少的次数,并根据需要进行扩展,从而避免将所有内容都匹配到第二个 #
,以防在字符串中的某个地方有第二个 #
后跟几位数字。
试试这个:
re.search("[A-Z]\w+:\s?\w+\s#\d+",string1)