gpt4 book ai didi

regex - 有没有办法使用正则表达式来匹配引号外文本的模式?

转载 作者:行者123 更新时间:2023-12-01 10:16:00 25 4
gpt4 key购买 nike

如标题所述,有没有一种方法可以使用正则表达式来匹配出现在引号之外的文本的文本模式。理想情况下,给定以下示例,我希望能够匹配引号外的逗号,而不是引号中的逗号。

This is some text, followed by "text, in quotes!"

This is some text, followed by "text, in quotes" with more "text, in quotes!"

此外,如果表达式像下面的示例一样尊重嵌套引号,那就太好了。但是,如果这在技术上对于正则表达式不可行,那么很高兴知道情况是否如此。

The programmer looked up from his desk, "This can't be good," he exclaimed, "the system is saying 'File not found!'"

我找到了一些表达式来匹配引号中的内容,但没有找到引号外的内容。

最佳答案

最简单的是同时匹配逗号和带引号的字符串,然后过滤掉带引号的字符串。

/"[^"]*"|,/g

如果你真的无法匹配引号,你可以这样做:

/,(?=[^"]*(?:"[^"]*"[^"]*)*\Z)/g

这可能会变慢,因为对于每个逗号,它都必须查看剩余的字符并计算引号的数量。 \Z 匹配字符串的结尾。类似于 $,但永远不会匹配行尾。

如果您不介意额外的捕获组,可以这样来代替:

/\G((?:[^"]*"[^"]*")*?[^"]*?)(,)/g

这只会扫描字符串一次。它改为从字符串开头计算引号。 \G 将匹配上次匹配结束的位置。


最后一个模式可能需要一个例子。

Input String: 'This is, some text, followed by "text, in quotes!" and more ,-as'
Matches:
1. ['This is', ',']
2. [' some text', ',']
3. [' and followed by "text, in quotes!" and more ', ',']

它匹配逗号前的字符串,以及逗号。

关于regex - 有没有办法使用正则表达式来匹配引号外文本的模式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/731015/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com