匹配以特定关键字开头的行中以逗号分隔的单词
Match words separated by comma in a line starting with a specific keyword
我有以下文字
type MyType1
type MyType2, MyType3
type MyType4,MyType5,MyType6, ...
NotMyType1, NotMyType2
如何匹配以关键字 type 开头的行中的所有逗号分隔*单词,以便我最后只有
MyType1
MyType2
MyType3
MyType4
MyType5
MyType6
我最初的尝试是匹配所有以逗号分隔的词 (https://regex101.com/r/mQDCgX/1)
(?<=[,])(\w+)(?=[,])|(?<=[\s,])(\w+)(?=[,]|$)
然后尝试将其分组并使用后向匹配 type。但是,它没有用。
注意:
* 逗号也可以用空格包围
正在将我的评论转换为答案。
您可以使用这个正则表达式:
(?:\btype|(?!^)\G,)\h*\K[^,\s]*
\G
断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。
(?!^)
用于确定我们不是在开始
\K
用于重置匹配信息
我有以下文字
type MyType1
type MyType2, MyType3
type MyType4,MyType5,MyType6, ...
NotMyType1, NotMyType2
如何匹配以关键字 type 开头的行中的所有逗号分隔*单词,以便我最后只有
MyType1
MyType2
MyType3
MyType4
MyType5
MyType6
我最初的尝试是匹配所有以逗号分隔的词 (https://regex101.com/r/mQDCgX/1)
(?<=[,])(\w+)(?=[,])|(?<=[\s,])(\w+)(?=[,]|$)
然后尝试将其分组并使用后向匹配 type。但是,它没有用。
注意: * 逗号也可以用空格包围
正在将我的评论转换为答案。
您可以使用这个正则表达式:
(?:\btype|(?!^)\G,)\h*\K[^,\s]*
\G
断言位置在前一个匹配的末尾或第一个匹配的字符串的开头。(?!^)
用于确定我们不是在开始\K
用于重置匹配信息