有些字符串与其他文本一起出现在一行中,这些字符串由开/闭引号分隔,如下所示。我试图找到一个正则表达式,将单词/短语与逗号匹配作为内部定界符(或整个外部定界的内容,如果在单个单词/短语的情况下没有逗号,则为整体)。例如,以下短语:
‘verdichten’
‘verdichten, verstopfen’
‘dunkel, finster, wolkig’
‘fort sein, verloren sein, verloren’
‘von den Nymph ergriffen, verzückt, verrückt’
‘der sich halten kann, halten kann’
我想要的结果是:
[[verdichten]]
[[verdichten]], [[verstopfen]]
[[dunkel]], [[finster]], [[wolkig]]
[[fort sein]], [[verloren sein]], [[verloren]]
[[von den Nymph ergriffen]], [[verzückt]], [[verrückt]]
[[der sich halten kann]], [[halten kann]]
它应该在Notepad ++或EmEditor中工作。
我可以与(‘)(.+?)(’)
搭配,但是找不到如上所述的替换方法。
答案 0 :(得分:3)
一个选择可能是利用\G
锚点和2个捕获组:
(?:‘|\G(?!^))([^,\r\n’]+)(?=[^\r\n’]*’)(?:(,\h*)|’)
部分
(?:
非捕获组
‘
匹配‘
|
或\G(?!^)
在上一场比赛的末尾而不是在开始时断言)*
关闭非捕获组(
捕获第1组
[^,\r\n’]+
匹配除,
或换行符以外的任意字符1倍以上)
关闭群组(?=[^\r\n’]*’)
正向前进,断言右边是’
(?:
非捕获组
(,\h*)|’
在第二组中捕获逗号和0+个水平空白字符,或者匹配’
)
关闭非捕获组在替换使用中:
[[$1]]$2
输出
[[verdichten]]
[[verdichten]], [[verstopfen]]
[[dunkel]], [[finster]], [[wolkig]]
[[fort sein]], [[verloren sein]], [[verloren]]
[[von den Nymph ergriffen]], [[verzückt]], [[verrückt]]
[[der sich halten kann]], [[halten kann]]
答案 1 :(得分:1)
借助@第四只小鸟的答案,这是一个正则表达式,该正则表达式将不包括比赛末端的空格字符:
(?:‘|\s*(?!^))([^,\r\n’]+)(?=[^\r\n’]*’)(?:(,)|’)
替换为
[[$1]]$2
将给出经过修剪的令牌:
[[verdichten]],[[verstopfen]]
[[dunkel]],[[finster]],[[wolkig]]
[[fort sein]],[[verloren sein]],[[verloren]]
[[von den Nymph ergriffen]],[[verzückt]],[[verrückt]]
[[der sich halten kann]],[[halten kann]]
编辑:
对于您提供的test context ‘verdichten’ test context
示例,可以使用:
(?:‘|\G\s*(?!^))([^,\r\n’]+)(?=[^\r\n’]*’)(?:(,)|’)