仅当存在开盘报价时,才匹配收盘价

Match closing quote only if opening quote exists

本文关键字:收盘价 存在 开盘      更新时间:2023-09-26

我有性质与'foo = "bar"'相似的字符串。 现在,当我测试这些字符串是否通过某个正则表达式时,我正在用["|']?测试"bar"周围的引号,使该区域中的完整正则表达式类似于["|']?('w+)["|']?(我正在去除不相关的表达式部分以提高可读性)。

这意味着几件事:

  • 单词周围的引号可以是双引号、单引号或不存在。
  • 无论它们是哪个,它们都不是"链接"的。 如果在左侧使用双引号,而右侧没有引号,这仍然会通过,依此类推。

我的目标是在第一个报价的基础上匹配第二个报价。 我非常想完全用正则表达式来实现这一点,尽管我知道我正在接近它可以做的极限(就 JavaScript 实现而言)。 我对前瞻/后视非常熟悉,但据我了解,这些只有在引号感人的情况下才有意义。 我希望我理解错误。

PS:我只担心现代浏览器,所以IE<10支持不是问题。

P.P.S:我提到我想用正则表达式来做这件事。 请省力,不要给其他选择。 一个"你不能这样做"就足够了。

你可以

这样写:

/(["'])'w+'1/

'1将只匹配与第一个捕获组 ((["'])) 捕获的字符串相同的字符串。

请注意,我从字符类["']中删除了管道字符|,因为这似乎是一个错误:管道字符在字符类中没有任何特殊含义。 ["|']仅在您希望能够匹配时才是正确的,例如 |bar| .