如何使用正则表达式与preg_replace函数在给定字符后给定的人物和事情之前删除任何东西?当然,这可以通过许多其他方式完成,例如爆炸和剥离字符串。但我很好奇preg_replace和正则表达式。PHP的preg_replace正则表达式
所以我从字符串唯一需要的是以下03B 和之前卸下的每一件事情/和斜线(/)和后/和点(。)
$string = 'rmbefore/03b.rmafter'
提前感谢!
如何使用正则表达式与preg_replace函数在给定字符后给定的人物和事情之前删除任何东西?当然,这可以通过许多其他方式完成,例如爆炸和剥离字符串。但我很好奇preg_replace和正则表达式。PHP的preg_replace正则表达式
所以我从字符串唯一需要的是以下03B 和之前卸下的每一件事情/和斜线(/)和后/和点(。)
$string = 'rmbefore/03b.rmafter'
提前感谢!
您可以使用反向引用中的preg_replace做到这一点:
preg_replace('#.*/([^\.]+)\..*#', '$1', $input);
此搜索任何东西直到一个斜杠,然后尽可能多的下面的字符串不是一个点,把它放在组1中(这就是围绕它的'()'),接着是一个点和其他东西,并用组1的内容替换它(whic h是括号内的表达式,在你的例子中应该是“03b”)。这是一个关于正则表达式的好网站:http://www.regular-expressions.info/php.html。
希望这会有所帮助。
$string = preg_replace('~^.*/(.*?)\..*$~',"$1",$string);
$s = preg_replace("#^.*/(.*?)\\..*$#","$1",$string)
说明:
^ matches start of string
.* matches a string of arbitrary characters (greedy)
/ matches the/
(.*?) matches a string of arbirtrary characters (non-greedy)
\. matches a dot
.* matches a string of arbitrary characters
$ matches end of string
你忘了给你的正则表达式添加分隔符。 – codaddict 2011-03-04 10:26:47
谢谢,我不知道php正则表达式的语法。为什么当它已经在字符串中时需要分隔符?我的意思是,我理解把它放在分隔符(Perl)之间,把它放在一个字符串(Python)中,但为什么呢? – markijbema 2011-03-04 10:28:50
你的意思是说,你想'/'之间的串'.'? – codaddict 2011-03-04 10:22:19
见[正则表达式的设计工具(http://stackoverflow.com/questions/89718/is-there-anything-like-regexbuddy-in-the-open-source-world)和[regular-expressions.info](HTTP ://regular-expressions.info/)来学习语法 – mario 2011-03-04 10:23:48