【问题标题】:RegExp Expression any multiple characters with linebreaks and whitespaces正则表达式带有换行符和空格的任何多个字符
【发布时间】:2014-03-07 23:45:15
【问题描述】:

我的正则表达式用于查找文本中的某些单词,而不是元素文本中的单词。

正则表达式

RegExp('\\b([^<(.*?)>(.?+)<\/(.*?)>])(' + wregex.join('|') + ')\\b(?=\\W)

示例

This is some text that should be looked through
though this text <code>Should not be looked at </code> and this text is ok to 
look at

所以我将解释我遇到问题的正则表达式的方法

([^&lt;(.*?)&gt;(.?+)&lt;\/(.*?)&gt;]) 不匹配以&lt;element&gt; 开头的任何文本,直到&lt;/element&gt;

这是最重要的,所以我尝试了多种方法,但不确定这个正则表达式是否可行。我不想匹配以基本 html 元素标记开头的任何内容,直到出现结束标记然后重新开始搜索。

编辑 我知道 RegEx 不应该用于解析 HTML 这是通过 TEXT

测试示例HERE

【问题讨论】:

  • 我必须发布这个,因为它的相关性(再次):请参阅here,了解为什么使用正则表达式解析 HTML 不好。
  • 它们都是不同的变量名。 tregex wregex iregex 或类似的东西。 Xynariz 我知道我在文本上使用它。

标签: javascript regex


【解决方案1】:

假设您搜索的文本格式正确(例如,没有标签不匹配),以下正则表达式应该可以工作:

^([^<]*<([^>]*)>[^<]*</\2>)*[^<]Your Text

这通过在获取文本之前匹配所有开放和封闭集来确保您的文本位于开放和封闭标签集之外。

它不适用于嵌套标签。正则表达式无法解析任意嵌套的标签。

但是,请记住,you should not parse html with regex

【讨论】:

  • 我知道不要用正则表达式解析 HTML,这就是我说文本的原因,它都是文本格式,这就是我在大声笑时得到的。
【解决方案2】:

为什么要把所有东西都放在一个正则表达式中?它可以像这样简单。请注意,我使用[^] 而不是. 来匹配换行符。

string.replace(/<[^]+?<\/[^]+?>/, '').match(/what i really want to find/gi)

是的,这很容易损坏,就像任何正则表达式解决方案一样。

【讨论】:

  • 我相信这会破坏嵌套标签,请注意。
  • 如果他只有&lt;code&gt;标签就足够了。试图让它更准确是不正当的。
  • 是的,我知道。我没有对您的答案投反对票,因为您已经努力解决 OP 的问题,尽管我知道(以及任何投反对票的人)正则表达式不是这个一般用例的合适解决方案。
  • 如您所见,我是如何使用正则表达式的,这就是我在一行中将其粉碎的原因
猜你喜欢
  • 1970-01-01
  • 2011-10-16
  • 2013-11-01
  • 2019-06-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多