Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/286.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php regexp以匹配模式_Php_Regex - Fatal编程技术网

Php regexp以匹配模式

Php regexp以匹配模式,php,regex,Php,Regex,我不知道足够的regexp来编写代码,但我知道regexp是正确的方法 Input: "2. Some text" Output "%%2.|Some text" Input: "[12] some text" Output: "%%[12]|some text" Input: "(a) this is great" Output: %%(a)|this is great" The matching should be done only if the beginning of

我不知道足够的regexp来编写代码,但我知道regexp是正确的方法

Input: "2. Some text"
Output "%%2.|Some text"

Input: "[12] some text"
Output: "%%[12]|some text"

Input: "(a)       this is great"
Output: %%(a)|this is great"

The matching should be done only if the beginning of the string starts with:
A number ("1", "25", "234"); 
A number followed by a dot ("1.", "25.", "234.");
A number in brackets ("[1]", "[25]", "[234]");
A number in parenthesis ("(1)", "(25)", "(234)");
A roman number in parenthesis ("(i)", "iv", "viii");
A roman number in brackets ("[i], "[iv]", "[viii]");
A single letter followed by a dot ("a.", "B.");
A single letter in parenthesis ("(a)", "(B)");
A single letter in brackets ("[a]", "[B]")

Then followed by at least one space

Then followed by text

Output:
%%
followed by the number/letter in the same formatting as it was found
followed by a pipe "|"
followed by the rest of the string (stripping all spaces between the number/letter and the rest of the text).

您需要使用此正则表达式进行搜索:

^(?:<([ib])>)?([\[(]?\w+[\])]|\w+\.)(?:<\/\1>)?\s+

在线演示:您需要使用此正则表达式进行搜索:

^(?:<([ib])>)?([\[(]?\w+[\])]|\w+\.)(?:<\/\1>)?\s+

在线演示:您需要使用此正则表达式进行搜索:

^(?:<([ib])>)?([\[(]?\w+[\])]|\w+\.)(?:<\/\1>)?\s+

在线演示:您需要使用此正则表达式进行搜索:

^(?:<([ib])>)?([\[(]?\w+[\])]|\w+\.)(?:<\/\1>)?\s+
在线演示:您可以尝试以下方法:

$pattern =<<<'LOD'
~
(?(DEFINE)
    (?<roman> m{0,4}(?:cm|cd|d?c{0,3})(?:xc|xl|l?x{0,3})(?:ix|iv|v?i{0,3}) )
)
^
(   \( (?: [0-9]+ | \g<roman> | [a-z] ) \)
  | \[ (?: [0-9]+ | \g<roman> | [a-z] )  ]
  | [0-9]+ \.? | [a-z] \.
) \h*
~xi
LOD;

$result = preg_replace($pattern, '%%$2|', $txt);
$pattern=您可以尝试以下方法:

$pattern =<<<'LOD'
~
(?(DEFINE)
    (?<roman> m{0,4}(?:cm|cd|d?c{0,3})(?:xc|xl|l?x{0,3})(?:ix|iv|v?i{0,3}) )
)
^
(   \( (?: [0-9]+ | \g<roman> | [a-z] ) \)
  | \[ (?: [0-9]+ | \g<roman> | [a-z] )  ]
  | [0-9]+ \.? | [a-z] \.
) \h*
~xi
LOD;

$result = preg_replace($pattern, '%%$2|', $txt);
$pattern=您可以尝试以下方法:

$pattern =<<<'LOD'
~
(?(DEFINE)
    (?<roman> m{0,4}(?:cm|cd|d?c{0,3})(?:xc|xl|l?x{0,3})(?:ix|iv|v?i{0,3}) )
)
^
(   \( (?: [0-9]+ | \g<roman> | [a-z] ) \)
  | \[ (?: [0-9]+ | \g<roman> | [a-z] )  ]
  | [0-9]+ \.? | [a-z] \.
) \h*
~xi
LOD;

$result = preg_replace($pattern, '%%$2|', $txt);
$pattern=您可以尝试以下方法:

$pattern =<<<'LOD'
~
(?(DEFINE)
    (?<roman> m{0,4}(?:cm|cd|d?c{0,3})(?:xc|xl|l?x{0,3})(?:ix|iv|v?i{0,3}) )
)
^
(   \( (?: [0-9]+ | \g<roman> | [a-z] ) \)
  | \[ (?: [0-9]+ | \g<roman> | [a-z] )  ]
  | [0-9]+ \.? | [a-z] \.
) \h*
~xi
LOD;

$result = preg_replace($pattern, '%%$2|', $txt);
$pattern=这应该可以-

$regex = "/^((?:[0-9]+\.)|(?:[a-zA-Z]\.)|(?:\[[0-9]+\])|(?:\[M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})\])|(?:\[[a-zA-Z]+\])|(?:\([a-zA-Z]\))|(?:\([0-9]+\)))\s*(.*)$/";
    $replacement = "%%$1|$2";
    $arr=   Array(
                "2. Some text",
                "a. Some text",
                "[12] some text",
                "[iii] some text",
                "[a] some text",
                "(a)       this is great",
                "(1)       this is great"
            );
    foreach($arr as $str){
        var_dump(preg_replace($regex, $replacement, $str));
    }
输出-

/*
    OUTPUT
*/
string '%%2.|Some text' (length=14)
string '%%a.|Some text' (length=14)
string '%%[12]|some text' (length=16)
string '%%[iii]|some text' (length=17)
string '%%[a]|some text' (length=15)
string '%%(a)|this is great' (length=19)
string '%%(1)|this is great' (length=19)
这应该是有效的-

$regex = "/^((?:[0-9]+\.)|(?:[a-zA-Z]\.)|(?:\[[0-9]+\])|(?:\[M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})\])|(?:\[[a-zA-Z]+\])|(?:\([a-zA-Z]\))|(?:\([0-9]+\)))\s*(.*)$/";
    $replacement = "%%$1|$2";
    $arr=   Array(
                "2. Some text",
                "a. Some text",
                "[12] some text",
                "[iii] some text",
                "[a] some text",
                "(a)       this is great",
                "(1)       this is great"
            );
    foreach($arr as $str){
        var_dump(preg_replace($regex, $replacement, $str));
    }
输出-

/*
    OUTPUT
*/
string '%%2.|Some text' (length=14)
string '%%a.|Some text' (length=14)
string '%%[12]|some text' (length=16)
string '%%[iii]|some text' (length=17)
string '%%[a]|some text' (length=15)
string '%%(a)|this is great' (length=19)
string '%%(1)|this is great' (length=19)
这应该是有效的-

$regex = "/^((?:[0-9]+\.)|(?:[a-zA-Z]\.)|(?:\[[0-9]+\])|(?:\[M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})\])|(?:\[[a-zA-Z]+\])|(?:\([a-zA-Z]\))|(?:\([0-9]+\)))\s*(.*)$/";
    $replacement = "%%$1|$2";
    $arr=   Array(
                "2. Some text",
                "a. Some text",
                "[12] some text",
                "[iii] some text",
                "[a] some text",
                "(a)       this is great",
                "(1)       this is great"
            );
    foreach($arr as $str){
        var_dump(preg_replace($regex, $replacement, $str));
    }
输出-

/*
    OUTPUT
*/
string '%%2.|Some text' (length=14)
string '%%a.|Some text' (length=14)
string '%%[12]|some text' (length=16)
string '%%[iii]|some text' (length=17)
string '%%[a]|some text' (length=15)
string '%%(a)|this is great' (length=19)
string '%%(1)|this is great' (length=19)
这应该是有效的-

$regex = "/^((?:[0-9]+\.)|(?:[a-zA-Z]\.)|(?:\[[0-9]+\])|(?:\[M{0,4}(?:CM|CD|D?C{0,3})(?:XC|XL|L?X{0,3})(?:IX|IV|V?I{0,3})\])|(?:\[[a-zA-Z]+\])|(?:\([a-zA-Z]\))|(?:\([0-9]+\)))\s*(.*)$/";
    $replacement = "%%$1|$2";
    $arr=   Array(
                "2. Some text",
                "a. Some text",
                "[12] some text",
                "[iii] some text",
                "[a] some text",
                "(a)       this is great",
                "(1)       this is great"
            );
    foreach($arr as $str){
        var_dump(preg_replace($regex, $replacement, $str));
    }
输出-

/*
    OUTPUT
*/
string '%%2.|Some text' (length=14)
string '%%a.|Some text' (length=14)
string '%%[12]|some text' (length=16)
string '%%[iii]|some text' (length=17)
string '%%[a]|some text' (length=15)
string '%%(a)|this is great' (length=19)
string '%%(1)|this is great' (length=19)



这几乎是完美的。不考虑多个空格,但只是意识到另一个要匹配的东西是“1”,“2”-即带右括号的数字。你能把它合并起来吗?多个空格的都处理好了(附件中的例子4)谢谢。但是示例4仍然返回
%%(12)|一些文本
,当它应该返回
%%(12)|一些文本
时,是否有一种方法不允许在括号中使用实际单词?因此,例如,
(anubhava)是伟大的
不会触发
%%anubhava |是伟大的
?这几乎是完美的。不考虑多个空格,但只是意识到另一个要匹配的东西是“1”,“2”-即带右括号的数字。你能把它合并起来吗?多个空格的都处理好了(附件中的例子4)谢谢。但是示例4仍然返回
%%(12)|一些文本
,当它应该返回
%%(12)|一些文本
时,是否有一种方法不允许在括号中使用实际单词?因此,例如,
(anubhava)是伟大的
不会触发
%%anubhava |是伟大的
?这几乎是完美的。不考虑多个空格,但只是意识到另一个要匹配的东西是“1”,“2”-即带右括号的数字。你能把它合并起来吗?多个空格的都处理好了(附件中的例子4)谢谢。但是示例4仍然返回
%%(12)|一些文本
,当它应该返回
%%(12)|一些文本
时,是否有一种方法不允许在括号中使用实际单词?因此,例如,
(anubhava)是伟大的
不会触发
%%anubhava |是伟大的
?这几乎是完美的。不考虑多个空格,但只是意识到另一个要匹配的东西是“1”,“2”-即带右括号的数字。你能把它合并起来吗?多个空格的都处理好了(附件中的例子4)谢谢。但是示例4仍然返回
%%(12)|一些文本
,当它应该返回
%%(12)|一些文本
时,是否有一种方法不允许在括号中使用实际单词?因此,例如,
(anubhava)很棒
不会触发
%%anubhava |很棒
?这里有一些很棒的想法。我意识到,在我对anubhava的回答的评论中,我还有一些要求。你的正则表达式不是由“1)某些文本”触发的@UnoMeinAme:你可以轻松添加它。如果我知道正则表达式,我可以,但我不知道:)这里有一些很棒的想法。我意识到,在我对anubhava的回答的评论中,我还有一些要求。你的正则表达式不是由“1)某些文本”触发的@UnoMeinAme:你可以轻松添加它。如果我知道正则表达式,我可以,但我不知道:)这里有一些很棒的想法。我意识到,在我对anubhava的回答的评论中,我还有一些要求。你的正则表达式不是由“1)某些文本”触发的@UnoMeinAme:你可以轻松添加它。如果我知道正则表达式,我可以,但我不知道:)这里有一些很棒的想法。我意识到,在我对anubhava回答的评论中,我还有一些要求。你的正则表达式不是由“1)某些文本”触发的@UnoMeinAme:你可以轻松添加它。如果我知道正则表达式,我可以,但我不:)