Regex 捕获指定的正则表达式,具有特定结束字符串的除外
输入字符串:Regex 捕获指定的正则表达式,具有特定结束字符串的除外,regex,Regex,输入字符串: <ce:textbox-head><ce:title id="ti0015">Close-up: The front of the box</ce:title></ce:textbox-head><ce:title id="ti0010">Safety Lessons From Two Events Without Core Damage</ce:title> 特写:盒
<ce:textbox-head><ce:title id="ti0015">Close-up: The front of the box</ce:title></ce:textbox-head><ce:title id="ti0010">Safety Lessons From Two Events Without Core Damage</ce:title>
特写:盒子前部从两次没有核心损坏的事件中吸取了安全教训
正则表达式不工作:
<ce:title(.*?)>(.*?)</ce:title>^((?!</ce:textbox-head>).)*$
(.*)^((?!)*$
预期产出:
<ce:title id="ti0010">Safety Lessons From Two Events Without Core Damage</ce:title>
两次无堆芯损坏事件的安全教训
这就是你想要的吗?
这就是你想要的吗?
(?因为您不打算将行与
完全匹配,所以不需要使用标记。相反,您可以使用负前瞻,如下所示:
(?!.*</ce:textbox-head>)(<ce:title(?:.*?)>.*?</ce:title>)
(?!*)(*?)
说明:
(?!.*)
反向前瞻,以防止将任何行与行中不需要的模式匹配
(.*)
预期的匹配组,与您编写的代码类似。放入捕获组
请注意,在您的尝试中,使用类似(?!))*
的标记构造,它不会阻止您匹配同一行中的任何子字符串。它只是确保匹配(如果有)不包括此模式(但仍将匹配不具有此模式的部分)。因此,输入中的第一行仍将意外匹配。由于您不打算将所有行与
进行匹配,因此不需要使用标记。相反,您可以使用负前瞻,如下所示:
(?!.*</ce:textbox-head>)(<ce:title(?:.*?)>.*?</ce:title>)
(?!*)(*?)
说明:
(?!.*)
反向前瞻,以防止将任何行与行中不需要的模式匹配
(.*)
预期的匹配组,与您编写的代码类似。放入捕获组
请注意,在尝试中使用类似(?!)*
的标记构造,它不会阻止您匹配同一行中的任何子字符串。它只是确保匹配(如果有)不包括此模式(但仍将匹配不具有此模式的零件)。因此,您输入的第一行仍将意外匹配。感谢您的努力,请您在代码标签中介绍您的代码和示例,以便更好地理解它,谢谢。这是您想要的吗?是的。谢谢@tshionoy在我下面建议的模式中,您不需要将
替换为[^>]
或[^]
。不管怎样,只要你喜欢任何选项。如果你允许在中嵌套标记,那么主要的区别很重要。谢谢你展示了你的努力,请你在代码标记中涵盖你的代码和示例,以便更好地理解它,谢谢。这是你想要的吗?是的。谢谢@tshionoy在我下面建议的模式中,您不需要将
替换为[^>]
或[^]
。不管怎样,只要您喜欢任何选项。如果允许捕获(.?)中的嵌套标记,则主要区别很重要。必须捕获任何字符(.?)必须捕获任何字符