正则表达式可选匹配
问题描述:
我试图在PHP中使用preg_match
函数来匹配两种类型的字符串,可能如下。正则表达式可选匹配
- '_mything_to_newthing'
- '_onething'
- '_mything_to_newthing_and_some_stuff'
在第三个以上,我只希望 “mything” 和 “newthing” 后自带所以一切第三部分只是用户可以添加的一些可选文本。理想情况下,正则表达式会出现在上面的情况中;
- 'mything', 'newthing'
- '' onething
- 'mything', 'newthing'
的模式应该尽可能匹配-ZA-Z0-9: - )
我的正则表达式是可怕的,所以任何帮助将不胜感激!
谢谢先进。
答
假设你正在谈论_
deliminated文本:
$regex = '/^_([a-zA-Z0-9]+)(|_to_([a-zA-Z0-9]+).*)$/';
$string = '_mything_to_newthing_and_some_stuff';
preg_match($regex, $string, $match);
$match = array(
0 => '_mything_to_newthing_and_some_stuff',
1 => 'mything',
2 => '_to_newthing_and_some_stuff',
3 => 'newthing',
);
至于什么更远,请提供更多的细节和更好的示例文本/输出
编辑:你总是可以只使用explode
:
$parts = explode('_', $string);
$parts = array(
0 => '',
1 => 'mything',
2 => 'to',
3 => 'newthing',
4 => 'and',
5 => 'some',
6 => 'stuff',
);
只要格式一致,它应该工作我们ll ...
谢谢!你知道..我从来没有想过它是`_`分隔文本!我可能只是使用`explode()`;) – tarnfeld 2011-01-21 23:39:56