如何使用单个正则表达式从同一个字符串中找到两个组?
How to find two groups from same string using single regex?
我正在尝试使用正则表达式并遇到以下问题。
说,我有一个字符串 I am batman
如何在一组中捕捉 bat
而在另一组中捕捉整个 batman
?
这个词可以是任何东西..
示例:
I am batman
I am superman
I am ironman
输出
bat and batman
sup and superman
iro and ironman
我试过 I am (\w{3}|\w*)
但它只捕获了一组(第 1 组)。
我的尝试有可能吗?
试试这个
I am ((\w{3})\w+)
它捕获整个单词的第一个和第二组中的前三个字符
这里是 PHP 代码:
<?php
$string = 'I am Ironman';
preg_match('/I am (\w{3}).*(man)/', $string, $matches);
var_dump($matches);
输出为:
array(3) {
[0]=>
string(12) "I am Ironman"
[1]=>
string(3) "Iro"
[2]=>
string(3) "man"
}
你想要的永远在$matches
的第一个和第二个([1]和[2])索引中。
我正在尝试使用正则表达式并遇到以下问题。
说,我有一个字符串 I am batman
如何在一组中捕捉 bat
而在另一组中捕捉整个 batman
?
这个词可以是任何东西..
示例:
I am batman
I am superman
I am ironman
输出
bat and batman
sup and superman
iro and ironman
我试过 I am (\w{3}|\w*)
但它只捕获了一组(第 1 组)。
我的尝试有可能吗?
试试这个
I am ((\w{3})\w+)
它捕获整个单词的第一个和第二组中的前三个字符
这里是 PHP 代码:
<?php
$string = 'I am Ironman';
preg_match('/I am (\w{3}).*(man)/', $string, $matches);
var_dump($matches);
输出为:
array(3) {
[0]=>
string(12) "I am Ironman"
[1]=>
string(3) "Iro"
[2]=>
string(3) "man"
}
你想要的永远在$matches
的第一个和第二个([1]和[2])索引中。