我有以下字符串:正則表達式選擇比我更想(PHP)
blah blah yo<desc>some text with description - unwanted
text</desc>um hey now some words yah<desc>some other description text
stuff - more unwanted here</desc>random word and ; things. Now a hyphen
outside of desc tag - with other text<desc>yet another description - unwanted
<desc>and that's about it.
(注意:在現實中有字符串中沒有換行/回車我只加了他們這裏閱讀)
我想從連字符僅選擇遞減標籤的文字前方,也包括前面的空間,也包括結束遞減標籤。這很簡單,因爲我只是這樣做:
\ s - 。*? < \ /遞減>
現在的問題是,這是遞減的標籤外的連字符是越來越選得過。所以我所有的選擇如下:
- unwanted text</desc>
- more unwanted here</desc>
- with other text<desc>yet another description - unwanted</desc>
所以前兩個是完美的,但看到最後一行是如何搞砸因爲 - 在遞減標籤外?
僅供參考,如果有興趣,在我的代碼,我做了替換這樣的:
$text = preg_replace('/\s-.*?<\/desc>/', '</desc>', $text);
我試着做一些回顧後的東西,但無法得到它的工作。
任何想法?
謝謝! 馬克
你的意思是'[^ - <>] *',對吧? – 2010-11-10 17:23:56
@Tim:是的。我將使用-nodeadkeys從此.. – mario 2010-11-10 17:25:02
哇!這很好。我是否會過多地解釋這種改變是如何工作的?謝謝! – user390480 2010-11-10 17:31:00