Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/17.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,在第一个字符串中,我希望输出到 6:/BENM/Gravity Exports/REM//INV:3267/FEB20 但它的给予直到:65: 有谁能提出更好的写作方法吗。 示例如下 例如,您可以使用一个末尾带有可选部分的捕获组来匹配:digits:a-z部分 input = 6:/BENM/Gravity Exports/REM//INV: 3267/FEB20:65:ghgh 6:/BENM/Tabuler Trading/REM//IMP/2020-341 original_regex

在第一个字符串中,我希望输出到 6:/BENM/Gravity Exports/REM//INV:3267/FEB20 但它的给予直到:65: 有谁能提出更好的写作方法吗。 示例如下

例如,您可以使用一个末尾带有可选部分的捕获组来匹配:digits:a-z部分

input = 
6:/BENM/Gravity Exports/REM//INV: 3267/FEB20:65:ghgh
6:/BENM/Tabuler Trading/REM//IMP/2020-341

original_regex = 6:[A-Za-z0-9 \/\.\-:] - bt this is taking full string 6:/BENM/Gravity Exports/REM//INV: 3267/FEB20:65:ghgh

modified_regex_pattern = 6:[A-Za-z0-9 \/\.\-:]{1,}[\/-:]

  • Capturegroup 1
    • 6:[A-Za-z0-9\/。:-]+?
      尽可能匹配字符类中列出的任何字符
  • 关闭第1组
  • (?:\d+:[a-z]+)?
    可以选择匹配末尾不希望包含的部分
  • $
    字符串结尾

注意不确定是否有意,但模式的最后一部分
[\/-:]
表示ASCII范围47-58


或者更精确的模式来获得匹配

(6:[A-Za-z0-9 \/.:-]+?)(?::\d+:[a-z]+)?$
  • 6://\w+/\w+
    匹配6和2次
    /
    ,后跟1+字字符和空格
  • \w+/[A-Z]+//[A-Z]+
    匹配1+个单词字符、
    /
    和大写字符、
    /
    和大写字符
  • (?:\d+)
    可以选择匹配空格和1+位数
  • /[A-Z]*\d+
    匹配
    /
    ,可选大写字符和1+数字
  • (?:-\d+)
    可选择匹配
    -
    和1+位

谢谢,但不能像这样硬编码,因为有些情况下我们可能没有某些字符。字符串可以是“/BENM/Tabuler Trading”,如下所示。我在这个字符串中遇到了多个:(冒号),:6,:65:标记的问题,当我在正则表达式中包含:时,它的取值是:65:标记。另外,我只需要标记6的数据,这就是problem@Navneet您可以从第一个标记开始,直到下一个标记第一次出现为止。
^6:.*(?=:\d |$)
,或者如果该标记是可选的
^(?:^6:)?*(?=:\d |$)
如果
6
不应硬编码,您可以使用
\d+
来匹配1+位。@Navneet有任何反馈吗?抱歉,无法更新,代码越来越复杂,让我用所有字符串来运行这个正则表达式,bt为它的工作提供示例,感谢现在接受这个,感谢@the First bird
6:/\w+/\w+ \w+/[A-Z]+//[A-Z]+(?:: \d+)?/[A-Z]*\d+(?:-\d+)?