[英]How to remove a string between the specific characters using regular expression in 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.