将正则表达式转换为可读文本

时间:2016-06-15 12:22:50

标签: php regex

PHP中有没有办法可以转换以下正则表达式

3.[0123]

3.0, 3.1, 3.2, 3.3

感谢您关注此事:)

编辑: 对不起我不清楚:/ 我想读出XML,并在网页上显示,我想向用户展示。 在那个XML中,有一个像这样的正则表达式:

3. [0123]

我的问题是:我可以将像我这样的正则表达式转换为普通用户理解的可重复文本:)

以便用户看到: 3.1,3.2,3.3,......

而不是这个: 3. [0123] (这是一个例子,它可以是每个数字)。

3 个答案:

答案 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.03.13.23.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
)