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
答案 0 :(得分:1)
例如,您可以使用一个捕获组,该捕获组的末尾有一个可选部分以匹配:digits:a-z部分。
(6:[A-Za-z0-9 \/.:-]+?)(?::\d+:[a-z]+)?$
(
捕获第1组
6:[A-Za-z0-9 \/.:-]+?
至少与字符类中列出的任何字符匹配)
关闭第1组(?::\d+:[a-z]+)?
可以选择在不想包含的末尾匹配该部分$
字符串结尾 注意:不确定是否要使用,但是模式[\/-:]
的最后部分表示的范围是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个以上的数字