表达式不匹配正则表达式

时间:2016-03-08 21:32:48

标签: php regex linux grep

grep(GNU grep)2.16

给出以下字符串:现在已经很晚了,但我想regexp_ _this!

grep '[a-zA-Z]+'会点击除'_!个字符以外的所有内容(确定)

grep '[a-zA-Z]+[a-zA-Z0-9_]*'没有任何内容(在我的示例regexp_中应该匹配,但不是_this(nok)

总结一下,我需要禁止以字母开头的单词,然后允许使用alphanum& '_'字符(0或更多时间)

我试过https://regex101.com,这两个正则表达式都是有效的。 只有在我的bash shell中(以及我正在编写的php代码中),第二个regexp才会命中。

编辑:@anubhava#1解决方案正常。 不过我想通过php代码来实现:preg_match('/[a-zA-Z]\+[a-zA-Z0-9_]*/',$myString)不起作用......

重新编辑:我误解了使用PHP preg_match,抱歉

1 个答案:

答案 0 :(得分:1)

我创建了一个包含内容的虚拟文件:

regexp_
asdf
_this
R_

bash命令(我添加了^):

grep '^[a-zA-Z]\+[a-zA-Z0-9_]' dummy

给了我结果:

regexp_
asdf
R_

在PHP中,正则表达式需要看起来像这样(我在+之前添加了^并删除了\):

preg_match('/^[a-zA-Z]+[a-zA-Z0-9_]*/',$myString);

我希望这就是你所需要的。