我有一个字符串,我想使用正则表达式来查找封装在两个已知模式之间的字符,“Cp_6%3A”,然后是一些字符,然后是“&”,可能更多字符,或者没有&,只是字符串的结尾。使用Python正则表达式找到2个标签之间的短语
我的代码如下所示:
def extract_id_from_ref(ref):
id = re.search("Cp\_6\%3A(.*?)(\& | $)", ref)
print(id)
但是,这并不产什么,任何想法?
在此先感谢
我有一个字符串,我想使用正则表达式来查找封装在两个已知模式之间的字符,“Cp_6%3A”,然后是一些字符,然后是“&”,可能更多字符,或者没有&,只是字符串的结尾。使用Python正则表达式找到2个标签之间的短语
我的代码如下所示:
def extract_id_from_ref(ref):
id = re.search("Cp\_6\%3A(.*?)(\& | $)", ref)
print(id)
但是,这并不产什么,任何想法?
在此先感谢
请注意,(\& | $)
匹配&
char及其之后的空格,或空格和字符串的结尾(这些空格在此处有意义!)。
使用否定的字符类[^&]*
(零个或多个字符比&
其他)来简化正则表达式(不需要的交替组或懒惰点匹配图案),然后访问.group(1)
:
def extract_id_from_ref(ref):
m = re.search(r"Cp_6%3A([^&]*)", ref)
if m:
print(m.group(1))
注意_
和%
都不是特殊的正则表达式元字符,并且不必转义。
查看regex demo。
的问题是,空间的正则表达式模式,也被考虑在内。此外,在以退格添加到字符串,你要么必须添加\\
(两个反斜杠)或使用原始字符串:
所以,你应该写:
r"Cp_6\%3A(.*?)(?:\&|$)"
如果再与匹配:
def extract_id_from_ref(ref):
id = re.search(r"Cp_6\%3A(.*?)(?:\&|$)", ref)
print(id)
它应该工作。
引用匹配组... – hwnd
即执行'id.group(0)'或任何你想要的项目。见[这里](https://docs.python.org/2/library/re.html) – patrick