Regex 如何匹配perl正则表达式中单词的重复

Regex 如何匹配perl正则表达式中单词的重复,regex,perl,Regex,Perl,情况很简单。“gat”一词在字符串中可能出现0次或1次。如何编写正则表达式来匹配它 现在我只能用下面的方法来做我想做的事情。它适用于我的情况,尽管它也会匹配“ga”、“at”等 我想在“gat”这个词上有一个更容易用的表达“?”,但我试过“{}”,但它不起作用 谢谢 .*?(\b(?:gat)\b)? 试试这个。这会让你全身舒展 试试这个。这会让你全身舒展 使用a和 也可以写成: $str =~ m/...(?:gat){0,1}.../ 使用a和 也可以写成: $str =~ m/...

情况很简单。“gat”一词在字符串中可能出现0次或1次。如何编写正则表达式来匹配它

现在我只能用下面的方法来做我想做的事情。它适用于我的情况,尽管它也会匹配“ga”、“at”等

我想在“gat”这个词上有一个更容易用的表达“?”,但我试过“{}”,但它不起作用

谢谢

.*?(\b(?:gat)\b)?
试试这个。这会让你全身舒展

试试这个。这会让你全身舒展

使用a和

也可以写成:

$str =~ m/...(?:gat){0,1}.../
使用a和

也可以写成:

$str =~ m/...(?:gat){0,1}.../

谢谢@Miller和@M42!非捕获组正是我想要的,但这三个点是什么意思?我试过了,我想没有三个就行了dots@Michael是的,这三个点是个谜……;)@Michael这三个点是占位符,假设这是一个更大的正则表达式的一部分。因为如果不是,正则表达式将匹配任何字符串。点在正则表达式中并不是很好的占位符。:)但是,还有什么更好的占位符呢?谢谢@Miller和@M42!非捕获组正是我想要的,但这三个点是什么意思?我试过了,我想没有三个就行了dots@Michael是的,这三个点是个谜……;)@Michael这三个点是占位符,假设这是一个更大的正则表达式的一部分。因为如果不是,正则表达式将匹配任何字符串。点在正则表达式中并不是很好的占位符。:)但是,还有什么更好的占位符呢?感谢vks提供的答案和非常好的在线工具!我认为您的解决方案与字符串中没有出现“gat”的情况不匹配。是的,非捕获组。我试图理解边界这个词。这是否意味着“\b”对之间的内容必须是一个单词?@Michael yes\b在单词边界(^\w | \w$| \w\w | \w\w)断言位置。它可以是这四个词之一。感谢vks提供的答案和非常好的在线工具!我认为您的解决方案与字符串中没有出现“gat”的情况不匹配。是的,非捕获组。我试图理解边界这个词。这是否意味着“\b”对之间的内容必须是一个单词?@Michael yes\b在单词边界(^\w | \w$| \w\w | \w\w)断言位置。它可以是这四个词之一。
$str =~ m/...(?:gat){0,1}.../