![](/img/trans.png)
[英]How to match repeating patterns containing special characters in Ruby using regex?
[英]How do I match capture multiple patterns using REGEX? (Ruby)
这是我尝试使用ruby捕获的测试字符串:
<?lang
this_should_be_captured();
and_also_this();
and_this();
?>
this text should NOT be captured
<?lang this_should_also_be_captured(); ?>
当我使用此正则表达式时:
(<\?lang(\n|.)*\?>)
如http://rubular.com/r/qSOOzq6HAx所示,该匹配项捕获了所有内容(包括我不需要的部分:“不应捕获此文本”)。
如何正确捕获两个不同的块而不捕获不需要的块?
您可以使用多行模式使其更简单。 您也不需要外部括号,因为这与整个匹配项相同,可以通过$~
获得。 如果要捕获<?lang ?>
内部的内容,则可以在其中放置括号。
/<\?lang(.*?)\?>/m
PS。
[ ]
代替括号( )
。 例如[\\n.]
(?: )
:),除非您需要引用内容,因为这样会使内容比使用捕获括号( )
更快。 例如, (?:\\n|.)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.