正则表达式匹配不带“]”开头的括号

这个乔纳斯

我有几段文字,其中普通markdown和自定义markdown扩展名混合在一起。效果很好。

[My Link Title](http://example.com)

(extension: value attribute: value)

但是,我有一个问题:在编辑文本时要应用一些样式,我需要一种方法来匹配扩展代码片段的左括号而不匹配markdown链接的左括号。

换句话说:我需要一个正则表达式(在javascript中有效)来匹配一个左括号(并且只匹配括号)

  1. [a-z0-9]+:
  2. 前面没有]字符。

我当前的正则表达式(可以很好地匹配扩展标签的右括号,但不幸的是也包括markdown链接的右括号)看起来像这样:/\((?=[a-z0-9]+:)/i

我已经看到人们在这样的正则表达式的开头使用否定的正向查找/(?=[^\]])\((?=[a-z0-9]+:)/i来检查此问题不幸的是,这似乎不适用于javascript。


更新

感谢您的提示!

我遇到的问题是我正在为CodeMirror创建一个“简单模式”语法模式以应用突出显示。这允许您指定一个正则表达式和一个标记,这些标记将应用于匹配的字符,但不允许对匹配进行任何进一步的操作。但是,您可以编写一个完整的语法模式,在其中可以执行这种操作,但是我无法做到这一点:-s

毕竟,我提出了另一种解决方案。我刚刚创建了两个正则表达式:

  1. 将所有开头的扩展括号与“]”以外的前一个字符匹配:
    /[^\]]\((?=[a-z0-9]+:)/i
  2. 匹配所有开头的扩展括号,且不带任何前面的字符:
    /^\((?=[a-z0-9]+:)/i

即使这不是最干净的方法,但目前看来效果还不错。

科比

使用跳过和匹配技巧

\[[^\]]+\]\([^\)]+\)|(\(\b)
  • \[[^\]]+\]\([^\)]+\)-匹配[]()链接(\[.*?\]\(.*?\)如果太混乱也可以写),或者-
  • (\(\b)-匹配并捕获直接在字母数字字符前的开括号。

工作示例:https//regex101.com/r/tY9sS4/1

您将只能看到结果并仅处理$1捕获分组的匹配项,而忽略其他匹配项。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

正则表达式匹配不带“]”开头的括号

来自分类Dev

正则表达式-不带括号的匹配模式

来自分类Dev

“)”匹配括号的正则表达式

来自分类Dev

正则表达式与=匹配的括号

来自分类Dev

MySQL正则表达式在字符串的开头或结尾匹配括号字符

来自分类Dev

不带花括号的正则表达式

来自分类Dev

正则表达式以匹配括号和JavaScript括号

来自分类Dev

正则表达式匹配括号和大括号

来自分类Dev

括号中的正则表达式开头

来自分类Dev

正则表达式删除括号的开头和结尾

来自分类Dev

匹配不带正则表达式的字符串

来自分类Dev

正则表达式匹配不带前导零的整数

来自分类Dev

与不带正则表达式的RewriteRule完全匹配

来自分类Dev

不带<a>标记的正则表达式匹配链接

来自分类Dev

正则表达式匹配不带分号的mac地址

来自分类Dev

正则表达式仅匹配不带_或-的单词

来自分类Dev

正则表达式匹配,不带换行^ M

来自分类Dev

Perl正则表达式多行匹配,不带点

来自分类Dev

正则表达式模式-匹配以@开头的单词

来自分类Dev

正则表达式匹配以“ $”开头的单词

来自分类Dev

正则表达式-如果模式以\开头,则不匹配

来自分类Dev

如何用正则表达式匹配以$开头的变量?

来自分类Dev

正则表达式:不以短语开头的匹配行

来自分类Dev

正则表达式匹配以@开头的单词

来自分类Dev

正则表达式匹配以空格字符开头的行

来自分类Dev

正则表达式匹配字符串以@ 开头

来自分类Dev

正则表达式匹配多行括号中的文本

来自分类Dev

Ruby-用于匹配括号的正则表达式?

来自分类Dev

正则表达式在括号内的匹配