将两个简单的regex's合并为一个


Make two simple regex's into one

我试图使一个正则表达式,将后面看。txt,然后后面的"-",并得到第一个数字....在这个例子中,它是1。

$record_pattern = '/.txt.+/';
preg_match($record_pattern, $decklist, $record);
print_r($record);
.txt?n=chihoi%20%283-1%29

我想把它写成一个表达式,但似乎只能写成两个。这是第一次使用正则表达式

你可以这样做:

$record_pattern = '/'.txt.+-('d)/';

现在,第一组包含您想要的内容。

你的正则表达式应该是,

'.txt[^-]*-'K'd

你不需要任何组。它只匹配从.txt到文字-。由于正则表达式中有'K,它会丢弃先前匹配的字符。在我们的例子中,它丢弃了.txt?n=chihoi%20%283-字符串。然后再开始匹配后面的第一个数字-

演示

你的PHP代码应该是,

<?php
$mystring = ".txt?n=chihoi%20%283-1%29";
$regex = '~'.txt[^-]*-'K'd~';
if (preg_match($regex, $mystring, $m)) {
    $yourmatch = $m[0]; 
    echo $yourmatch;
    }
?> //=> 1