javascript - 正则表达式匹配 q'[Mike's bike]' 等引号

标签 javascript regex

我正在尝试编写一个匹配 Oracle q-quotes 的正则表达式对于 code-prettify.js 中的 PL/SQL 词法分析器。例如,

q'[Here's Johnny]'

这应该与相同的匹配

'Here''s Johnny'

(也就是说,SQL 会将其全部视为一个文本字符串。与传统的两个单引号相比,q 引号的优点是您不必遍历文本字符串,将所有的内容加倍)单引号。)

引号分隔符可以是 [、{、< 或 ( 中的任何一个,但我认为如果我可以让它使用一种括号类型,那么我可以将这些变体重复为 OR,例如

/^(?:pattern1|pattern2|pattern3))/

最终我想要一个正则表达式来匹配普通的单引号字符串或带有任何括号类型的 q 引号。

最佳答案

对于您的词法分析器,您需要 q'[Here's Johnny]' 的文本和'Here''s Johnny'进行匹配。假设您希望匹配包含组成字符串标记的所有字符,包括引号、括号等,则此正则表达式应该有效:

(?:q'\[.*?\](?=')'|q'<.*?>(?=')'|q'\(.*?\)(?=')'|q'{.*?}(?=')'|(?!q)'(?:[^']|'')*')

两个相关部分是:

  1. q'\[.*?\](?=')'是 q 引用字符串的基础,其余相应的括号都有自己的声明,并且
  2. '(?:[^']|'')*' , 匹配单引号字符串。

您可以查看匹配示例here .

关于javascript - 正则表达式匹配 q'[Mike's bike]' 等引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32255652/

相关文章:

javascript - 使用 jquery 隐藏电子邮件

JavaScript 正则表达式 : test and exec

c# - 正则表达式拆分包含标记的文本

regex - 使用 vim 替换出现次数可变的不匹配字符串

c# - 在 C# 中使用正则表达式提取字符串的逗号分隔部分

php - 如何找到字符串中第一个字母 [A-Za-z] 的位置?

javascript - 如何在javascript中连续执行代码?

javascript - Firebase 存储用户变量?

javascript - 如何在 wordpress 主题选项中使用 redux 框架更改 body 的背景图像?

javascript - 使用 JavaScript 获取所有对象(DOM 或其他)