我需要匹配字符串之前出现的字符。字符串可能出现多次,这意味着字符可能会改变。
测试主题:
§aUsername: Message, which happens to contain Username. §3Wow, Username again.
我想要三组,因为Username
在受试者中出现了三次。
所需输出:
["Username", 'a']
["Username", 'a']
["Username", '3']
我写了这个正则表达式,但它只适用于出现一次Username
。
My (failed) try:
§(.).*?Username
编辑:该regex完全忽略第二次出现的Username
,它应该匹配与第一次相同的字符(a
)。
其输出:
["Username", 'a']
["Username", '3']
如果支持回溯中的量词(。. NET、Pyton PiPy模块或较新的Javascript引擎),你可以在lookbehind中使用捕获组。
匹配将是Username,组1将包含除换行符外的单个任意字符。
(?<=§(.)[^§]*)Username
(?<=
正面向后看,左边是什么§(.)
在组1中匹配§
和capture单个任意字符[^§]*
匹配除§
以外的任何字符,使用反字符类,任意次数
)
后面看Username
逐字匹配
Regex演示