通过正则表达式

时间:2020-11-10 12:10:32

标签: python regex

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,}[\/-:]

我要在第一个字符串中输出直到 6:/ BENM /重力出口/ REM // INV:3267 / FEB20 但直到:65: 任何人都可以提出更好的写方法。 例子如下 https://regex101.com/r/pAduvy/1

1 个答案:

答案 0 :(得分:1)

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

(6:[A-Za-z0-9 \/.:-]+?)(?::\d+:[a-z]+)?$
  • (捕获第1组
    • 6:[A-Za-z0-9 \/.:-]+?至少与字符类中列出的任何字符匹配
  • )关闭第1组
  • (?::\d+:[a-z]+)?可以选择在不想包含的末尾匹配该部分
  • $字符串结尾

Regex demo

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


或更精确的模式仅获得匹配

6:/\w+/\w+ \w+/[A-Z]+//[A-Z]+(?:: \d+)?/[A-Z]*\d+(?:-\d+)?
  • 6:/\w+/\w+ 匹配6次和2次/,后跟1个以上的字符和一个空格
  • \w+/[A-Z]+//[A-Z]+匹配1个以上的单词字符,/和大写字符,//,再匹配大写字符
  • (?:: \d+)?可以选择匹配空格和1个以上的数字
  • /[A-Z]*\d+匹配/,可选的大写字符和1个以上的数字
  • (?:-\d+)?可以匹配-和1个以上的数字

Regex demo