[英]Regular Expression to get full string if it doesn't contain a specific character?
我需要有關正則表達式的幫助,該正則表達式將在以下字符串中找到匹配項:
myDOG_test
myCAT_test
基本上,我想從這些路徑返回“ DOG”或“ CAT”。
然后我有類似的字符串(都以“ my”開頭),但在我想要的值之后不包含下划線,在這種情況下,我只想返回FULL字符串-在匹配組中。
myCentralReports
myDEMO3
這是我到目前為止的REGEXP:
.*?my(.*?)\_.*
這正確地將CAT和DOG放入匹配組中,但是我遇到了與其他2個字符串匹配的問題。 很顯然,我在那里留下了硬編碼的下划線,只是為了向您展示我的開始 - 但我需要為其他情況修改它。 任何幫助表示贊賞! 謝謝。
不確定為什么你需要正則表達式:
explode('_', $string);
第一個元素將包含myDOG
或myDEMO3
。 如果需要,請刪除'my'
,不清楚是否要在第二種情況下使用'my'
。
'/\smy(.+?)[_|\s]/'
這將獲得空格字符后跟“my”和下一個尾隨下划線或空白字符之間的任何內容。 試試看。
你可以做:
$list = array(' myDOG_test', 'myCAT_test',' myCentralReports', 'myDEMO3');
foreach($list as $elem) {
preg_match("/^\s*my(.+?)(?:_|$)/", $elem, $m);
echo "$elem : matches = ";print_r($m);
}
輸出:
myDOG_test : matches = Array
(
[0] => myDOG_
[1] => DOG
)
myCAT_test : matches = Array
(
[0] => myCAT_
[1] => CAT
)
myCentralReports : matches = Array
(
[0] => myCentralReports
[1] => CentralReports
)
myDEMO3 : matches = Array
(
[0] => myDEMO3
[1] => DEMO3
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.