Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/16.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 正则表达式,用于选择位于标记之间的段落的多行组件(非html)_Regex_Tags - Fatal编程技术网

Regex 正则表达式,用于选择位于标记之间的段落的多行组件(非html)

Regex 正则表达式,用于选择位于标记之间的段落的多行组件(非html),regex,tags,Regex,Tags,在下面,我需要一个Regexpr来捕获 请注意这不是html 谢谢也许这个regexp:\.+\/s能帮你吗?第二个匹配项将是您正在搜索的内容。有关详细信息,请参阅。此regexp:\.+\/s是否可以帮助您?第二个匹配项将是您正在搜索的内容。有关详细信息,请参阅 #!/usr/bin/perl -w undef $/; $_ = <>; m|<(.*?)>(.*)</\1>|s; print $2; 如果你真的需要的话,用和类似的替换位来结束。un

在下面,我需要一个Regexpr来捕获

请注意这不是html

谢谢

也许这个regexp:\.+\/s能帮你吗?第二个匹配项将是您正在搜索的内容。有关详细信息,请参阅。

此regexp:\.+\/s是否可以帮助您?第二个匹配项将是您正在搜索的内容。有关详细信息,请参阅

#!/usr/bin/perl -w

undef $/;

$_ = <>;

m|<(.*?)>(.*)</\1>|s;

print $2;
如果你真的需要的话,用和类似的替换位来结束。undef$/位允许您通过一次读取来大量读取,并且$2选择第二个匹配组。正则表达式的s和结尾要求。甚至匹配新行字符


如果你真的需要的话,用和类似的替换位来结束。undef$/位允许您通过一次读取来大量读取,并且$2选择第二个匹配组。正则表达式的s和结尾要求。要匹配甚至是新行字符。

编辑:正如@Kobi在评论中正确指出的那样,下面原始帖子的更简单版本当然是:

<(tagstart)>(.*?)</\1>
由于原始版本也可以使用,而且所有其他语句都是正确的,所以我将保持原样

当且仅当标记不能嵌套时:

<(tagstart)>((?:(?!</\1>).)*)</\1>
说明:

<(tagstart)>      # matches "<tagstart>" and stores "tagstart" in group 1
(                 # begin group 2
  (?:             #   begin non-capturing group
    (?!           #     begin negative look-ahead (... not followed by)
      </\1>       #       a closing tag with the same name as group 1
    )             #     end negative look-ahead
    .             #     if ok, match the next character
  )*              #   end non-capturing group, repeat
)                 # end group 2 (stores everything between the tags)
</\1>             # a closing tag with the same name as group 1
正则表达式需要在单行模式(有时称为dotall模式)中应用。要么这样,要么你替换。对于[\s\s]

若要在任意两个名称相同的标记之间一般匹配文本,请使用而不是

根据您的正则表达式的风格,有些事情可能会有不同的工作方式,比如$1而不是\1用于反向引用,或者需要额外转义的元字符


参见a.

编辑:正如@Kobi在评论中正确指出的那样,下面原始帖子的更简单版本当然是:

<(tagstart)>(.*?)</\1>
由于原始版本也可以使用,而且所有其他语句都是正确的,所以我将保持原样

当且仅当标记不能嵌套时:

<(tagstart)>((?:(?!</\1>).)*)</\1>
说明:

<(tagstart)>      # matches "<tagstart>" and stores "tagstart" in group 1
(                 # begin group 2
  (?:             #   begin non-capturing group
    (?!           #     begin negative look-ahead (... not followed by)
      </\1>       #       a closing tag with the same name as group 1
    )             #     end negative look-ahead
    .             #     if ok, match the next character
  )*              #   end non-capturing group, repeat
)                 # end group 2 (stores everything between the tags)
</\1>             # a closing tag with the same name as group 1
正则表达式需要在单行模式(有时称为dotall模式)中应用。要么这样,要么你替换。对于[\s\s]

若要在任意两个名称相同的标记之间一般匹配文本,请使用而不是

根据您的正则表达式的风格,有些事情可能会有不同的工作方式,比如$1而不是\1用于反向引用,或者需要额外转义的元字符


请参阅a。

您忘记在页面上添加/m i.e.多行选项end@shybovycha:也在演示中,以确保完整性@迪格马尔,天哪。。。我犯了很多错误。。。看来那天晚上对我来说有点难=非常感谢=在除Ruby之外的大多数正则表达式引擎中,m修饰符只允许^和$分别匹配行的开头和开头:它不允许。比赛线中断。对于要匹配“\r”和\n,您需要启用s DOT-ALL标志:/…/s您忘记在end@shybovycha:也在演示中,以确保完整性@迪格马尔,天哪。。。我犯了很多错误。。。看来那天晚上对我来说有点难=非常感谢=在除Ruby之外的大多数正则表达式引擎中,m修饰符只允许^和$分别匹配行的开头和开头:它不允许。比赛线中断。对于要匹配“\r”和\n,您需要启用s DOT-ALL标志:/…/s它不是HTML这一事实与问题的答案不太相关。这些标记可以嵌套吗?不可以。很抱歉,我只是不想让一大群人发布关于不注册html的问题的链接。事实上,它不是html与问题的答案没有那么相关。这些标记可以嵌套吗?不,它们不能。对不起,我只是不想让一群人发布关于不注册html的问题的链接。你真的需要这里的前瞻吗?一场懒惰的比赛不是吗?行为完全一样?@Kobi:嗯,你说得对。看来我想的太复杂了。你真的需要先看一下吗?一场懒惰的比赛不是吗?行为完全一样?@Kobi:嗯,你说得对。看来我想的太复杂了。