Python 通过正则表达式解析字符串后无法获得所需的输出
在第一个字符串中,我希望输出到 6:/BENM/Gravity Exports/REM//INV:3267/FEB20 但它的给予直到:65: 有谁能提出更好的写作方法吗。 示例如下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
例如,您可以使用一个末尾带有可选部分的捕获组来匹配: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和2次6://\w+/\w+
,后跟1+字字符和空格/
匹配1+个单词字符、\w+/[A-Z]+//[A-Z]+
和大写字符、/
和大写字符/
可以选择匹配空格和1+位数(?:\d+)
匹配/[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+)?