簡體   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