我有以下两个正则表达式。我的目标是提取“ EX”之后的所有内容
示例1:
(^[EX]{2})(\w+)
示例数据
EX12456
https://regex101.com/r/6QqHwf/13
匹配信息显示第2组是我想要的数据,并且与替换$ 2匹配。
示例2:
(?<=EX)(?s)(.*$)
示例数据
123456/stackoverflo@|EX789
https://regex101.com/r/6QqHwf/12
匹配信息显示第1组是我想要的数据,但与替换$ 1不匹配。
如何将日期“ 789”添加/替换到替代品中?谢谢!!!
答案 0 :(得分:2)
“替代”删除匹配的内容,并忽略剩下的内容。您原来的正则表达式将匹配EX
并允许将其删除,但是第二个正则表达式不匹配123456/stackoverflo@|EX
,因此不会将其删除。请尝试使用.*(?<=EX)(?s)(.*$)
-与字符串的第一部分匹配,然后将其删除。
请注意,.*
与整个字符串匹配-但是,(<=EX)
之后的后缀会强制其放弃部分匹配,以满足约束条件。 (.*
的意思是“除换行符外的其他任何字符,重复零次或多次。”
答案 1 :(得分:2)
如果要提取EX
之后的所有内容,则不必使用任何捕获组,而可以使用positive lookbehind (?<=
。
请注意,[EX]
是character class,它将与E或X匹配
(?<=EX).*
在第二种模式中,只有一个匹配是组1。如果用组1替换,则最终将以相同的起始值结束。
如果仅出现EX
,您可以做的是匹配它并在替换中使用组1(例如$1
),这样匹配就不会成为结果的一部分
^.*EX(.*$)