Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配以字符开头的行的多个匹配项_Regex - Fatal编程技术网

Regex 匹配以字符开头的行的多个匹配项

Regex 匹配以字符开头的行的多个匹配项,regex,Regex,我想编写一个正则表达式,匹配以可选空格开头的行,。例如,整个事件应匹配3次: <div data-test="foo" class="first bar baz" > <h2>test</h2> </div> 正如我所说,我的正则表达式就是这样做的。但是,它将与此相匹配: <div> <foo></foo> <baaaar> 三次。由于所有内容都是匹配的,所以我希望将这

我想编写一个正则表达式,匹配以可选空格开头的行,
。例如,整个事件应匹配3次:

<div
    data-test="foo"
    class="first bar baz"
>
   <h2>test</h2>
</div>

正如我所说,我的正则表达式就是这样做的。但是,它将与此相匹配:

<div>
<foo></foo>
<baaaar>

三次。由于所有内容都是匹配的,所以我希望将这些匹配合并并作为单个匹配返回

但是,例如,如果中间行无效,则应返回2个匹配项:

<div>         // match 1
no<foo></foo> // doesn't start with `<`, ignored
<baaaar>      // match 2
//匹配1

否//不是以“开头您指定了一个惰性匹配(匹配最小可能的子字符串)。删除问号,它将尝试使用贪婪的问号(匹配可能的最大子字符串):
(^\s*\s*$)+


但是一般来说,使用正则表达式处理HTML会让你走上一条痛苦的道路。

“应该匹配3次”:4次?根据您的描述,
也会匹配。如果您的目标是识别HTML,那么regex不是合适的工具。不,它应该匹配整行代码一次。开始
开始比赛,结束
结束比赛。我提供的正则表达式符合我的要求。我只想合并它生成的相邻匹配项。然后,您的第一段描述不正确,因为它只允许
匹配。是的,我也想这样。正则表达式满足我的需要。如果结果匹配是相邻的,我想合并它们。这也会匹配在首字母
之前有一个字符的行。如果您希望保留一些匹配的子字符串并丢弃其他不匹配的子字符串,那么任务实际上是字符串操纵。只有正则表达式不能做到这一点。使用反向引用尝试sed。
  <   b-8253j'\sf>
foo<bar>
   <div
   matches
   here>but this line is also matched</div>
<div>
<foo></foo>
<baaaar>
<div>         // match 1
no<foo></foo> // doesn't start with `<`, ignored
<baaaar>      // match 2