簡體   English   中英

正則表達式獲取不包含特定字符的完整字符串?

[英]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);

第一個元素將包含myDOGmyDEMO3 如果需要,請刪除'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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM