regex - 模式匹配使用正则表达式查找大于号

标签 regex string pattern-matching

我需要一个正则表达式,以便如果我搜索“>”大于。

例如

对于这个字符串,我会得到 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/

相关文章:

正则表达式 - 带有空格和特殊字符

php - preg_replace 用奇怪的字符替换引号?

java - java中有效过滤字符串

Java从职位描述中提取文本(正则表达式或模式)

arrays - Ruby 匹配数组中的字符串

python 2.7 : Matching a subtitle events in VTT subtitles using a regular expression

javascript - 解析 JavaScript 字符串的最佳实践

java - 如何最好地将 StringBuilder 转换为 String[]?

python - 特定类型的可变数量元素的结构模式

regex - RegEx模式可在这些情况下限制破折号