PHP中有没有办法可以转换以下正则表达式
3.[0123]
要
3.0, 3.1, 3.2, 3.3
感谢您关注此事:)
编辑: 对不起我不清楚:/ 我想读出XML,并在网页上显示,我想向用户展示。 在那个XML中,有一个像这样的正则表达式:
3. [0123]
我的问题是:我可以将像我这样的正则表达式转换为普通用户理解的可重复文本:)
以便用户看到: 3.1,3.2,3.3,......
而不是这个: 3. [0123] (这是一个例子,它可以是每个数字)。
答案 0 :(得分:0)
这样的东西?
select count (t) from (
select city,count(block) as t from report group by city, block) s
group by city
答案 1 :(得分:0)
您可以使用or
使正则表达式更具可读性。
(3\.0|3\.1|3\.2|3\.3)
另请注意.
的转义。 .
是正则表达式中的特殊字符,表示"任何字符"您的正则表达式不仅可以3.0
,3.1
,3.2
或3.3
。您还应该使用锚点来确保它是字符串中的唯一值。所以最终版本(没有分隔符):
^(3\.0|3\.1|3\.2|3\.3)$
答案 2 :(得分:0)
如果我理解正确,那么您正在寻求将正则表达式扩展为所有可能性,即满足它的所有结果的列表。对此的一般情况是一个非常复杂的问题,并且会经常导致无限多的可能性(例如,使用.+
)。有关此问题的更多讨论,请参见Regular expression listing all possibilities。
对于一个简单的例子,只有一个字符类,它很容易扩展可能性,
<?php
$base = '3.[0123]';
// Match a single character class, e.g. [0123] or [ABC]
$matches = [];
preg_match('/\[(\w+)\]/', $base, $matches);
list($expansion, $options) = $matches;
$possibilities = [];
// For each possible character in the class, replace the full original
// character class in the expression with that character
foreach (str_split($options) as $option)
{
$possibilities[] = str_replace($expansion, $option, $base);
}
print_r($possibilities);
=
Array
(
[0] => 3.0
[1] => 3.1
[2] => 3.2
[3] => 3.3
)