我有一堆纯文本字符串,需要将其转换为 csv-ish 语法,例如 a、b、c 和 d。
变为 "a","b", “c”,“d”
。我用这个正则表达式完成了 90% 的工作: /(.+?),/g
(此处示例为: http://regexr.com/3de7o )。但是我无法让它对“d”变量也做同样的事情;捕获 和
之后以及 .
.
编辑:澄清一下,需要拆分的内容通常是多个单词,例如这个短语,另一个短语和最后一个短语。
-> “这个短语”,“另一个短语”,“最后一个短语”
最佳答案
你可以这样做:
(?:\sand)?(?:\s)?([^,.]+)
(?:\sand)?
匹配零个或一个空格,后跟and
;这将解决最后一个问题(?:\s)?
匹配所需模式之前的零个或一个空格以上两个放入非捕获组
在捕获的组
([^,.]+)
中,我们得到了所需的模式,即下一个、
或之前的任何字符。
(最后一个)。
根据@Amadan的建议,当您想要替换时,捕获逗号并保留最后一个。
:
(?:\sand)?(?:\s)?([^,.]+)(?:(,)|.)
现在在替换中,您可以使用:
"$1"$2
关于正则表达式:以 'and' 作为最后一个分割符分割列表句子(a、b、c 和 d。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265872/