【问题标题】:I can not choose RegEx我不能选择正则表达式
【发布时间】:2023-03-27 01:16:01
【问题描述】:
<p[^>]*>([a-zA-Z0-9_\W]*)\:<\/p>.*?(<blockquote[^>]*>).*?<\/blockquote>

<p> demo demo:</p>  <p ><img src="http://demo.com/123.jpg" width="100%"/>   <br/>   <em>Credit: demo2 demo2 </em></p>   <p >here1 here1:</p>    <blockquote cite="here1">   <p><em>demo3. demo3 demo3 demo3:</em></p>   </blockquote>   <p >demo4 demo4:</p>    <p ><img src="http://demo.com/1234.jpg" width="100%"/>  <br/>   <em>demo5 demo 5 demo5</em></p> <p >demo6 demo6:</p>    <blockquote cite="demo6">   <p><em>demo7 demo7<br/>

上述模式出现故障。我在哪里可以犯错误。我上面写的模式,我不能在一个句子中选择我想要的。帮助请求。

我想得到结果:

<p >here1 here1:</p>    <blockquote cite="here1">   <p><em>demo3. demo3 demo3 demo3:</em></p>   </blockquote>

I added that I will ask for a sample.

【问题讨论】:

  • 请包含一个文本示例,而不是图像。
  • 谢谢迈克尔。我添加了图像。请见:i.stack.imgur.com/UtQQL.png
  • 我将代码添加为文本。
  • 使用 html 解析器而不是正则表达式。

标签: html regex asp-classic tags


【解决方案1】:

如果你真的想在这里使用正则表达式,这可能对你有用:

<p[^>]*>((?:(?!<\/p>).)+)<\/p>\s*<blockquote[^>]*>(.*?)<\/blockquote>

相关部分是((?:(?!&lt;\/p&gt;).)+):在英文中,它说,“向前看,确保没有&lt;/p&gt;,然后抓住一个字符,然后重复这个(直到下一个&lt;/p&gt;)”。通过这种方式,不能匹配多个兄弟&lt;p&gt;(或者实际上是嵌套的&lt;p&gt;),这就是您的原始模式所发生的情况:&lt;p[^&gt;]*&gt;([a-zA-Z0-9_\W]*)\:&lt;\/p&gt; 将在这种情况下错误地匹配:@987654329 @。我还在&lt;p&gt;&lt;blockquote&gt; 之间仅指定了空格(\s*,而不是.*?),因此您只匹配前面的 &lt;p&gt;

demo

【讨论】:

  • 超级。非常感谢您。
猜你喜欢
  • 1970-01-01
  • 2011-06-18
  • 1970-01-01
  • 1970-01-01
  • 2015-01-11
  • 2016-01-11
  • 2010-09-16
  • 1970-01-01
相关资源
最近更新 更多