捕获字符串文本后的所有匹配模式
Capture all matching patterns after a string text
我想在 <ParagraphB>
之后捕获这两个值,但我目前只能捕获最后一个匹配项。到目前为止,这是我的正则表达式:
<ParagraphB>(?s).*<value>([^\<]*)
<ParagraphA>
<value>12</value>
<ParagraphB>
<value>34</value>
<value>56</value>
感谢任何帮助。
要多次捕获该值,我们需要使用 global
标志并在每次匹配中检索捕获的组。
演示: https://regex101.com/r/1Demzp/1
模式:(?:<ParagraphB>|\G<\/value>)\s*?<value>([^<]*)
解释:第一次匹配,<ParagraphB>
。从下一次迭代开始,仅当字符串以 </value>
开头时才匹配
(?:<ParagraphB>|\G<\/value>)
:匹配 <ParagraphB>
或字符串应以 </value>
开头。 \G
用于 continuing matches.
\s*
: 任意 space 个字符的非贪婪匹配
([^<]*)
: 捕获所有字符直到 <
.
我想在 <ParagraphB>
之后捕获这两个值,但我目前只能捕获最后一个匹配项。到目前为止,这是我的正则表达式:
<ParagraphB>(?s).*<value>([^\<]*)
<ParagraphA>
<value>12</value>
<ParagraphB>
<value>34</value>
<value>56</value>
感谢任何帮助。
要多次捕获该值,我们需要使用 global
标志并在每次匹配中检索捕获的组。
演示: https://regex101.com/r/1Demzp/1
模式:(?:<ParagraphB>|\G<\/value>)\s*?<value>([^<]*)
解释:第一次匹配,<ParagraphB>
。从下一次迭代开始,仅当字符串以 </value>
(?:<ParagraphB>|\G<\/value>)
:匹配<ParagraphB>
或字符串应以</value>
开头。\G
用于 continuing matches.\s*
: 任意 space 个字符的非贪婪匹配([^<]*)
: 捕获所有字符直到<
.