我需要一个正则表达式,以便如果我搜索“>”大于。
例如
对于这个字符串,我会得到 true - "if x> 2"
对于这个字符串,我会得到错误的“<template>
”
我试过这个 - [^<][a-zA-Z0-9_]+[a-zA-Z0-9_ ]*>
作为正则表达式
但问题是它找到了一个匹配的子字符串
例如在 <template>
它找到 template>
并返回真。
谢谢。
编辑:
我正在使用这个正则表达式 [^<a-zA-Z0-9_][a-zA-Z0-9_]+[ ]*>
对整个 Firefox 1.0 源代码进行了尝试,它似乎工作正常。
最佳答案
听起来您想匹配包含 >
的行但不是 <
.这种模式将做到这一点:
/^(?=.*>)[^<]+$/
但是,我很好奇您为什么要这样做。听起来很可疑,就像您试图用正则表达式解析 HTML,其中 is usually A Bad Idea.
编辑:
现在你要做什么更清楚了,但你应该意识到这突破了正则表达式的能力极限。他们无法真正区分模板声明和包含尖括号的文本之间的区别,但是如果您知道模板声明都匹配一个非常特定的模式,那么您可以很好地捕捉它们。
如果您所有的模板声明都遵循
<[0-9]+template>
模式,你可以这样做:/^.*(?<!<\d+template)>.*$/
如果您的模板不遵循如此严格的约定,那么您需要一个真正的 C++ 解析器。正则表达式基本上不可能区分模板声明和这个:
a=b<c>d;
...这是 C++ 中的有效代码(我相信,翻译为
a = (b < c) > d;
)。
关于regex - 模式匹配使用正则表达式查找大于号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6348417/