繁体   English   中英

PHP正则表达式在字符之间或字符串结尾之间进行选择

[英]PHP Regular Expression select between characters or to end of string

我已经在这个问题上工作了几天,它开始让我发疯。 我很喜欢使用正则表达式,但是这一件事似乎正在使我逃避现实。
我需要在一组字符之间匹配一个字符串(如果存在的话),否则它应该与该行的末尾匹配。

例如:我只是想从以下示例中获取“内容”:

$str1="title:content @description"
$str2="title:content"
preg_match("/:(.*?)[(@)|(:)|(\*)]?$/",$str1,$content);
preg_match("/:(.*?)[(@)|(:)|(\*)]?$/",$str2,$content);

$ str1输出:“ content @description”

$ str2输出:“内容”

注意:字符串的顺序可能不同,也可能没有特殊字符(@ 、:或*),或者它们可能有一个特殊字符,因此除了“行尾”外没有其他“字符串结尾”字符会很常见”。

我已经尝试过我可以想到的每种组合,以使整个“或”陈述成为条件,并阅读大量类似但不完全相同的问题。

你可以写:

preg_match("/:(.*?)(?:[@:*]|$)/", $str1, $content);

(请注意,匹配使用|结束于@:* 字符串结尾之一),您的版本具有[@:*]可选,但使字符串结尾为必选。)

或者简单地:

preg_match("/:([^@:*]*)/", $str1, $content);

(表示“冒号,后跟零个或多个@:*字符”)。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM