我有一个家庭作业问题,我需要使用正则表达式来解析一个大字符串中的子字符串。
目标是选择与以下参数匹配的子字符串:
子字符串以相同的大写字符开始和结束,我需要忽略前面数字为0的大写字符的任何实例。
例如,ZAp0ZuZAuX0AZA
将包含匹配项ZAp0ZuZ
和AuX0AZA
我在这件事上混了几个小时,老实说,我还没接近。。。
我试过一些类似下面的代码的东西,但是那将选择从第一个大写到最后一个大写的所有内容。我也有
[A-Z]{1}[[:alnum:]]*[A-Z]{1} <--- this selects the whole string
[A-Z]{1}[[:alnum:]][A-Z]{1} <--- this gives me strings like ZuZ, AuX
真的很感谢你的帮助,我完全被这个难住了。
最佳答案
这可能管用(?<!0)([A-Z]).*?(?<!0)\1
https://regex101.com/r/nES9FP/1
解释
(?<! 0 ) # Ignore Upper case with zero in front of it
( [A-Z] ) # (1), This Upper case is to be found down stream
.*? # Lazy, any character
(?<! 0 ) # Ignore Upper case with zero in front of it
\1 # Backref to what is in group (1)