Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
弄乱正则表达式python_Python_Regex - Fatal编程技术网

弄乱正则表达式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的新东西。