0

我的 PHP 代码中有这样的字符串:

$string = "(A)[B]C/D/E:F?G";

如何使用正则表达式从字符串中提取A, B, C, D, E, F,部分?G

例如some_function_do_some_regex,我想要一个函数,它以 my$string作为参数并从中提取七个想要的部分

$parts = some_function_do_some_regex($string);
print_r($parts);

// OUTPUT
/*
Array
(
    [0] => A
    [1] => B
    [2] => C
    [3] => D
    [4] => E
    [5] => F
    [6] => G
)
*/

更新:
我不得不提到一件重要的事情,但我忘记了,对不起。请记住,字符串中的七个部分(A、B、C、D、E、F、G)用于样本,它们的值可以改变,

例如考虑这个:

$string = "(aaa)[bbb]ccc/ddd/eee:fff?ggg";

输出将是这样的

/*
Array
(
    [0] => aaa
    [1] => bbb
    [2] => ccc
    [3] => ddd
    [4] => eee
    [5] => fff
    [6] => ggg
)
*/

还有一个重要的注意事项:
在第 1 到第 6 部分中,没有符号字符,我们有a-zand0-9值,但是对于最后一部分(问号后面的部分),我们可以有任何字符,例如[and/和其他任何字符。

这意味着零件结构非常重要。

以下是对每个部分的描述:
A部分:介于两者之间的所有内容(B)
部分:介于两者之间的所有内容[C]
部分:第一部分/和之后的所有内容]
D 部分:第一和第二/
部分之间的所有内容 E 部分:第二部分/和之前的所有内容:
F 部分:之后:和之后的所有内容?
G部分之前:之后的一切?

4

2 回答 2

0

正如 Rohit 所建议的,这是该模式的 PHP 实现。

$string = "(A)[B]C/D/E:F?G";
preg_match_all('/\w/', $string, $matches);
print_r($matches[0]);
于 2012-12-08T08:36:50.763 回答
0

感谢您的Rohit Jain帮助。我创建了这个答案:

<?php

$string = "(a)[b]c/d/e:f?g:part?with(non-alphabetical)[characters]!";
preg_match_all('/([a-zA-Z0-9]+)|\?([^?]*)$/', $string, $sixparts);
preg_match_all('/([a-zA-Z0-9]+)|.*?\?(.*)$/', $string, $sevenpart);

$part_a = $sixparts[0][0];
$part_b = $sixparts[0][1];
$part_c = $sixparts[0][2];
$part_d = $sixparts[0][3];
$part_e = $sixparts[0][4];
$part_f = $sixparts[0][5];
$part_g = $sevenpart[2][0];

echo $part_a; // a
echo $part_b; // b
echo $part_c; // c
echo $part_d; // d
echo $part_e; // e
echo $part_f; // f
echo $part_g; // g:part?with(non-alphabetical)[characters]!
于 2012-12-11T03:31:12.277 回答