我的正则表达式是在文本中找到某些单词,而不是在元素文本中找到单词。
REGEXP
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
所以我会解释我的正则表达式的方法,我遇到了麻烦
([^<(.*?)>(.?+)<\/(.*?)>])
在此<
元素之前,请勿匹配任何以>
元素 </
开头的文字。1>} 元素 >
这是最重要的,所以我尝试了多种方法,不确定这个正则表达式是否可行。我不希望匹配任何以基本html元素标记开头的内容,直到结束标记出现,然后重新开始搜索。
修改 我知道RegEx不应该用来解析 HTML 这是通过 TEXT
查看的测试示例 HERE
答案 0 :(得分:0)
为什么在一个正则表达式中粉碎一切?它可以这么简单。请注意,我使用[^]
代替.
,以匹配换行符。
string.replace(/<[^]+?<\/[^]+?>/, '').match(/what i really want to find/gi)
是的,这很容易破坏,正如任何正则表达式解决方案一样。
答案 1 :(得分:0)
假设您正在搜索的文本正确形成(如同,没有标记不匹配),则以下正则表达式应该有效:
^([^<]*<([^>]*)>[^<]*</\2>)*[^<]Your Text
通过在到达文本之前匹配所有打开和关闭的集,可以确保您的文本位于打开和关闭的标记集之外。
它不适用于嵌套标签。正则表达式无法解析任意嵌套标签。