我有一个包含一些HTML代码的字符串,例如:
This is <strong id="c1-id-8">some</strong> <em id="c1-id-9">text</em>
Run Code Online (Sandbox Code Playgroud)
我需要id从每个HTML标签中删除属性,但我对正则表达式没有经验,所以我在互联网上搜索这里和那里,我写了这个模式:[\s]+id=\".*\"
不幸的是,它没有像我期望的那样工作.事实上,我希望正则表达式能够捕获id="随后重复任何次数的任何字符并以最接近的双引号终止; 实际上在这个例子中,我期待抓住id="c1-id-8"和id="c1-id-9".但是相反,模式返回了子串id="c1-id-8">some</strong> <em id="c1-id-9",它找到id="了双引号字符的第一次出现和最后一次出现.
你能告诉我我的模式有什么问题以及如何解决它吗?非常感谢你
nac*_*ito 11
.*正则表达式中的量词是贪婪的(意味着它尽可能匹配).为了满足最低要求,您可以使用类似的东西/\s+id=\"[^\"]*\"/.括号[]表示一个字符类.因此它将匹配括号内的所有内容.[^]角色类开头的克拉是否定的,这意味着除了括号中指定的内容之外,它将匹配所有内容.
另一种方法是通过将.*量词更改为尽可能少的量来告诉量词是懒惰的.*?.
| 归档时间: |
|
| 查看次数: |
12536 次 |
| 最近记录: |