考慮的文本替換有條件的正則表達式替換
$mystring = preg_replace('/'.$myitem.'[ab]/', "", $mystring);
以下的正則表達式規則,當且僅當它後面或者a
或b
在$mystring
這將空白字符替換$myitem
。
我的要求是不是一個空白字符來代替它,但用來替換:
a
如果a
遇到或b
如果b
遇到。
我不能做到這一點在兩次迭代,如:
$mystring = preg_replace('/'.$myitem.'a/', "a", $mystring);
$mystring = preg_replace('/'.$myitem.'b/', "b", $mystring);
,因爲第一次迭代也會對$mystring
一些副作用,使第二條規則在這種情況下無用。
有沒有辦法在單個迭代中執行此條件替換?
編輯響應答案
OK我已經簡單化我的問題,但這裏是實際的正則表達式規則
'(?:(?<=^|\s)(?=\S|$)|(?<=^|\S)(?=\s|$))'.$myitem.'(?:(?<=^|\s)(?=\S|$)|(?<=^|\S)(?=\s|$)) *([ab])'
現在,在這種情況下,我怎麼算反向引用數,因爲我看到一些有條件的分組也是如此。
感謝,但我已經簡單化我正則表達式規則。我現在編輯我的問題,包括實際的正則表達式。你能告訴我在這種情況下如何計算反向引用數? – oat 2015-03-13 19:58:08
這個正則表達式用於整個單詞替換,當單詞也可能包含特殊字符,因此簡單的單詞邊界可能不起作用。我從這裏借用了這條規則:http://stackoverflow.com/questions/8267307/regex-expression-to-match-whole-word/8267757#8267757 – oat 2015-03-13 20:07:05
請參閱EDIT問題之前您有樣品輸入/輸出。沒有這些,就很難理解這些要求。海事組織在獲得答案後改變問題也是不公平的。如果問題過於簡單,那麼你也可以提出一個新問題。 – anubhava 2015-03-13 20:10:07