RegEx匹配在关键字之前首次出现

时间:2016-03-17 09:20:00

标签: regex replace match find-occurrences

我有以下字符串:

$('#button_step1').click(function(e) {
        $.ajax({
            type: 'POST',
            url: '../core/views/cp/test.php',
            data: { message: 'works' },

            success: function(resp) {
                alert(resp);
            }
        });
        $('.step1 input').prop('disabled', true);
        //window.location.replace("http://10.0.0.13/core/views/cp/test.php");
    });

我的目标是从字符串中移除此部分,这组li标签包含“code”关键字:

<ul><li><span>some words here.</span></li><li><span>other words here.</span></li><li><span>Code: 55555.</span></li></ul>

我正在尝试编写一个RegEx来帮助我匹配和替换我的子串。 <li><span>Code: 55555.</span></li> 之间的文字可能会有所不同,但始终会有关键字“代码”。这就是我到目前为止所做的:

<li></li>

问题是,它与第一个<li>(.*)code:(.*?)<\/li> 代码匹配,我希望它与我们的关键字“代码”之前的<li>代码匹配。

感谢您的帮助!

4 个答案:

答案 0 :(得分:4)

videosArrayList.get(i).getVideo()

  • 按字面意思匹配<li>(?:.(?!</li>))+Code:(?:.*?)</li>
  • 后面跟着文字<li>不匹配的任意数量的字符(这可确保匹配仅在相关</li>处开始)
  • 后面是文字<li>
  • 在文字Code:匹配之前跟随任意数量的字符(非贪婪)

Demo

答案 1 :(得分:0)

您可以尝试使用正则表达式组,因此您的正则表达式将是这样的:

R '(小于\立GT;(*)代码:。?(*)&LT; /锂&GT;){1,}'

此正则表达式将匹配多于1次的字符串,其格式为&lt; \ li&gt;(。*)代码:(。*?)&lt; / li&gt ;.

我想这可能对你有所帮助。

答案 2 :(得分:0)

(.*)(<li>.*span.*<\/li>)(.*)

Tim Biegeleisen提供的RegEx工作得很好。如果您想确保“代码”一词存在,只需将“span”替换为“Code”,例如:

(.*)(<li>.*Code.*<\/li>)(.*)

答案 3 :(得分:0)

  • [az | AZ] [抄送]颂歌:[0-9 |。] + [az | AZ]
  • 此处关键字“代码”在正则表达式中是强制性的