正则表达式:以 'and' 作为最后一个分割符分割列表句子(a、b、c 和 d。)

标签 regex

我有一堆纯文本字符串,需要将其转换为 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

Demo

关于正则表达式:以 'and' 作为最后一个分割符分割列表句子(a、b、c 和 d。),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37265872/

相关文章:

特定模式的 HTML 模式

regex - 如何替换与 egrep 匹配的较大字符串中的子字符串?

c# - 正则表达式 - 只捕获旁边没有字母的数字

c# - 从 YouTube 获取 FLV URL

php - PHP 新手。我应该学习 PCRE 还是 POSIX。 (说两者都无济于事)

php - 正则表达式字符串中断

php - Codeigniter 表单验证 - 使用允许重音的正则表达式的自定义回调

regex - 将 data.frame 的 colnames 增加 1

javascript - 正则表达式日期中的斜杠和反斜杠

regex - HTML5 中的模式正则表达式防止空白?