我正在尝试使用正则表达式来搜索一个长字符串,但我在想出一个表达式时遇到了麻烦。我正在尝试在一些 HTML 中搜索一组标签,这些标签以包含某个值的标签开始,并以包含另一个值的不同标签结束。我目前用来尝试的代码如下:
matcher = new RegExp(".*(<[^>]+" + startText + "((?!" + endText + ").)*" + endText + ")", 'g');
data.replace(matcher, "$1");
中间 ( ((\\?\\!endText).)*
) 周围的陌生感是从另一个线程借来的,在这里找到,这似乎描述了我的问题。我面临的问题是表达式与开始标签匹配,但它没有找到结束标签,而是包含其余数据。此外,中间的环顾使表情放慢了很多。关于如何让这个工作的任何建议?
编辑: 我知道在 RegEx 中解析 HTML 不是最好的选择(让我觉得很脏),但我正处于时间紧迫的状态,我能想到的任何其他选择都需要太长时间。很难说我将要解析的标记到底是什么样子,因为我正在动态创建它。我能做的最好的事情就是说我正在查看一个大型数据表,该表是为一系列日期的一系列项目收集的。这两个范围都可以变化,我试图从单行中选择一定范围的日期。startText
和的近似值endText
为\\@\\@ASSET_ID\\@\\@_<YYYY_MM_DD>
. 这个想法是找到对应于这个单元格范围的代码。(此编辑很可能使这更加混乱,但我不确定在不解释整个应用程序的情况下我还能提供多少信息)。
编辑: 嗯,这是一个愚蠢的问题。显然,我只是忘了.*
在最后一个括号之后添加。不敢相信我花了这么长时间!感谢那些试图提供帮助的人!