弄乱正则表达式python
我正在尝试下一个代码,但似乎我做错了什么弄乱正则表达式python,python,regex,Python,Regex,我正在尝试下一个代码,但似乎我做错了什么 import re lista = ["\\hola\\01\\02Jan\\05\\03", "\\hola\\01\\02Dem\\12", "\\hola\\01\\02March\\12\\04"] for l in lista: m= re.search("\\\\\d{2,2}\\\\\d{2,2}[a-zA-Z]+\\\\\d{2,2}\s",l) if m: print (m.group(0)) 结果
import re
lista = ["\\hola\\01\\02Jan\\05\\03",
"\\hola\\01\\02Dem\\12",
"\\hola\\01\\02March\\12\\04"]
for l in lista:
m= re.search("\\\\\d{2,2}\\\\\d{2,2}[a-zA-Z]+\\\\\d{2,2}\s",l)
if m:
print (m.group(0))
结果应该是第二个字符串。
我已尝试不使用
\s
,但结果与所有字符串匹配。您可以尝试此正则表达式:
lista = [r"\hola\01\02Jan\05\03", r"\hola\01\02Dem\12", r"\hola\01\02March\12\04"]
>>> for l in lista:
... m = re.search(r"\\\d{2,2}\\\d{2,2}[a-zA-Z]+\\\d{2}$", l)
... if m:
... print m.group()
...
输出:
\01\02Dem\12
- 使用
表单声明正则表达式并将其输入为原始字符串r“…”
- 使用锚定
避免匹配不需要的输入$
>>> for l in lista:
totalNo = l.count('\\')
if totalNo == 4:
print l
你能把预期产出包括在内吗?是的。我编辑代码是因为有一个勘误表。如果你只需要得到四个序列,你可以这样做:^(?:\\\\[^\]+){4}$。但是,如果您关心这些序列包含哪些文本,则需要详细说明。提示:使用
r
-strings避免漏掉许多反斜杠。谢谢。对于r
我不得不在正则表达式中只使用两个反斜杠(`\`)。如果可能,请更正代码。再次感谢,我学到了关于regex的新东西。