我需要写一个字符串,使我有机会提取一部分字符串。
在以下情况下,我只需要提取ES_(作为国家/地区代码),但是仅在情况1和2中可以提取,因为如您在情况3中所见,字符串ES_的一部分出现了,但作为更宽的文本SALES_的一部分
我能够使用^(?:[^ ] * ){4}([^ _] *)来处理案例2,但我不知道如何修改它到: -如果它在字符串的开头(或结尾),则将其提取 -如果它在字符串的该部分之前或之后与下划线不同,请忽略它
非常感谢您的帮助!
答案 0 :(得分:0)
您可以在后面使用积极的表情:
(?<=^|_)ES_
ES_
MF_FB-Paid_UCB_SpecialContent_AdventCalendar_Drivetosite_2019-12-16
IT_MF_FB-Paid_UCB_SPECIALSALES_AdventCalendar_Drivetosite_2019-12-16
MF_FB-Paid_UCB_SpecialContent _ES_
AdventCalendar_Drivetosite_2019-12-16
答案 1 :(得分:0)
如果支持(?<!
后的否定性,则可以使用negated character class [^
(?<![^_])ES_
或者,如果您只想要ES
部分:
(?<![^_])ES(?=_)
如果不支持环视,则可以声明字符串的开头或使用alternation匹配下划线,并为ES
部分使用捕获组并匹配以下下划线
(?:^|_)(ES)_