我有一个字符串,其中包含汽车的rego编号,如
1FX9JE - 2012 Audi A3 Ambition Sportback MY12 Stronic
我想匹配除了rego号码之外的所有内容,所以在破折号之后的所有内容。
我提出的正则表达式是(php)
\s.[^-]*$
我提出的初始正则表达式只有在字符串只包含1个破折号时才能匹配破折号后的任何内容。例如https://regex101.com/r/Jao8W0/1
但是,如果字符串超过1个破折号。正则表达式不可用。 例如:https://regex101.com/r/Jao8W0/2
即使在第一个短划线后字符串包含额外的短划线,我仍然可以在第一个短划线后匹配任何内容。
谢谢
答案 0 :(得分:1)
试试这个正则表达式:
^[^-\r\n]+-\s*\K.*$
<强>解释强>
^
- 断言字符串的开头[^-\r\n]+
- 匹配任何既不是-
也不是换行符的字符的出现次数-\s*
- 匹配字符串中的第一个-
,后跟0 +空格\K
- 忘记目前为止匹配的所有内容.*
- 匹配任何字符的出现次数$
- 断言字符串的结尾答案 1 :(得分:1)
如果只有一个空格,您可以使用此模式:
(?<=\-\s)(.*)
否则如果可能有多个空格,请从匹配
中获取组(1)(?<=\-)\s*(.*)
(?&lt; = ...)确保给定的模式匹配,结束于 表达式中的当前位置。模式必须有一个固定的 宽度。不消耗任何字符。