除了四位数的最后一个序列外,我需要一个字符串中所有内容的正则表达式匹配。
abc12345 => abc1
abc1234abc => abcabc
abc123.45678abc => abc123.4abc
1234abc => abc
12345abc => 1abc
我尝试过很多东西。我得到的最接近的是
.*[^(\d{4})]
但是当四个最后一个序列后面有字符时,这会失败。
答案 0 :(得分:0)
答案 1 :(得分:0)
将正则表达式的部分粘合在一起的唯一方法是利用反向引用的功能。您可以详细了解反向引用here。
此代码解决了您的问题,您可以看到正则表达式演示here:
([a-z0-9.]*)\d{4}([a-z0-9]+)
基本上每当你将某些东西放入正常括号()
中作为反向引用时,([a-z0-9.]*)
这将是第一个反向引用,([a-z0-9]+)
这将是第二个。例如,如果你想要这个正则表达式:
([a-z0-9.]*)([a-z0-9.]*)
您可以对该括号使用反向引用:
([a-z0-9.]*)\1
当然,这可以通过以下方式解决:
([a-z0-9.]*){2}
但是在这种情况下{2}
必须在正则表达式之后,与后向引用相反,在它们被定义之后,它们可以在任何地方使用。例如:
([a-z0-9.]*) Continuation of regular expression \1
从您的问题来看,您使用的是哪种编程语言并不清楚。但是,大多数编程语言都支持反向引用。你想要做的是创建这样的正则表达式,然后访问第一个和第三个反向引用,连接它们并提取文本。