正则表达式可选匹配

时间:2011-01-21 23:27:16

标签: php regex optional

我正在尝试使用PHP中的preg_match函数匹配两种类型的字符串,这可能是以下内容。

  • '_ mything_to_newthing'
  • '_ onething'
  • '_ mything_to_newthing_and_some_stuff'

在上面的第三个中,我只想要“mything”和“newthing”,所以第三部分之后的所有内容都只是用户可以添加的一些可选文本。理想情况下,正如以上情况中的正则表达式一样;

  • 'mything','newthing'
  • 'onething'
  • 'mything','newthing'

如果可能,模式应与a-zA-Z0-9匹配: - )

我的正则表达非常糟糕,所以任何帮助都会受到赞赏!

先谢谢。

1 个答案:

答案 0 :(得分:1)

假设您正在谈论_已删除文字:

$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',
);

只要格式一致,它就应该运作良好......