【问题标题】:Regex : Find a character unless it is surrounded by double quotes正则表达式:查找一个字符,除非它被双引号括起来
【发布时间】:2019-05-11 09:16:46
【问题描述】:

我希望在字符串中找到诸如“,”之类的字符,除非它被双引号括起来。

例如在字符串中: '例如,“字符串”,'

我希望它匹配“示例”之后的逗号,但不匹配“字符串”之后的逗号。

有没有可以做到这一点的正则表达式?

【问题讨论】:

  • 你的意思是字符串是完全像“\n”还是像“something \n something else”?
  • 已经添加了一个例子。抱歉没有更早添加。
  • 如果您要解析 CSV,通常不适合使用正则表达式。请参阅stackoverflow.com/questions/8493195/… 了解更多信息。

标签: javascript regex


【解决方案1】:

这样的?

console.log(
  `For example in the string: 'Example, "String,"'`.match(/, /g).length,
  `For example, in the following string: 'Example, "String," I'd like to find all ","'`.match(/, /g).length,
)  

【讨论】:

    【解决方案2】:

    您可以使用(?![text]) 来否定正则表达式中的一组字符。

    例如,(?!"),(?!") 之类的东西会找到所有未被"“触及”的,。您可能需要使用此正则表达式的多种变体检查您的字符串以获得所需的结果,但我认为您应该能够使用给定的示例。

    【讨论】:

    • 所有浏览器的 javascript 实现都处理负前瞻吗?
    • 这是错误的,因为如果删除,和"String,".('Example,"String,"')之间的空格,它将不起作用
    • ES2018 支持 @mplungjan Lookbehind。我找不到添加前瞻支持的标准,但早期的 stackoverflow 问题表明它已经实施了很长时间(例如 this question from 2011)。
    • @Ehsan 感谢您的评论,我澄清了我的答案中的正则表达式会找到什么。
    • @Ehsan - 如果所有真正的逗号后面都跟一个空格,那可能就没意思了
    猜你喜欢
    • 2019-05-11
    • 2015-10-13
    • 1970-01-01
    • 2017-06-18
    • 1970-01-01
    • 2023-01-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多