Regex 匹配方括号url标记的正则表达式
我正在尝试创建一个正则表达式,它将匹配方括号url标记,如下所示:-Regex 匹配方括号url标记的正则表达式,regex,Regex,我正在尝试创建一个正则表达式,它将匹配方括号url标记,如下所示:- [url]some text[/url] 或 这就是我创建的模式 (\[url.*\])(.*?)(\[\\url\]) 如果一个句子中只有一个标记,它就可以正常工作,但是如果我在一个句子中有两个标记,如下所示: This is a sentence [url]blah[\url] this is another sentence[url]blah[\url] 它只有一个匹配项,可以抓取第一次打开和最后一次关闭之间的所有
[url]some text[/url]
或
这就是我创建的模式
(\[url.*\])(.*?)(\[\\url\])
如果一个句子中只有一个标记,它就可以正常工作,但是如果我在一个句子中有两个标记,如下所示:
This is a sentence [url]blah[\url] this is another sentence[url]blah[\url]
它只有一个匹配项,可以抓取第一次打开和最后一次关闭之间的所有内容[url]
标记。我做了一些研究,并添加了?
,以阻止它贪婪地攫取一切,但它不起作用。我还尝试使用:
[^\[]*
而不是
(.*?)
同样,它也没什么区别。这是正则表达式中第一个导致它无法正常工作的
*
。试试这个:
(\[url[^\]]*\])([^\[]*)(\[\\url\])
*
是贪婪的,匹配所有东西。如果您从当前正则表达式中检查此组,您实际上会看到另一个句子[url]作为匹配,blah
在第二组中,而[\url]
在第三组中。*
如果您事先知道要使用文本/数字,则可能有点危险[a-zA-Z0-9]并避免该问题
类似于:
\[url\][a-zA-Z0-9]+\[\\url\]
更具体地说,您可以给出:
(\[url( .+[=].+\])*)[z-zA-Z0-9 ](\[\url\])
仅适用于
url
标记:
(?:\[url])([^\[]+)\[[\/\\]url]
要删除所有标记,请执行以下操作:
(?:\[(\w+)[^]]*]).*?\[[\/\\]\1]
非常感谢。我不经常使用正则表达式,也没有注意到第一个*
(?:\[(\w+)[^]]*]).*?\[[\/\\]\1]