匹配以字符开头的子字符串

时间:2013-04-18 11:56:18

标签: php regex

我想匹配以某个字符(星号)开头的字符串部分:

abc*DEFxyz => *DEF

abc*DE*Fxyz => *DE*F

尝试preg_match_all('/[$\*A-Z]+/', $string, $matches);但它似乎不起作用。我在第二个例子中得到*DE*F

2 个答案:

答案 0 :(得分:4)

将正则表达式更改为: \*[A-Z]+

http://regexr.com?34itc

你的正则表达式:[$\*A-Z]+表示包含*和A-Z字符的字符串,没有提及任何关于start的内容。

答案 1 :(得分:1)

尝试:

^[^*]*\*

说“从行的开头,跳过所有非星号字符并停在第一个”

扩展这个:

s/^[^*]*\*(.*)/

将在星号后面返回字符串的剩余部分。要包含星号,请按以下方式进行调整

s/^[^*]*(\*.*)/

这是检查正则表达式的绝佳工具:http://gskinner.com/RegExr/

希望这有帮助