3
我需要短語拆分單詞內的空間,但是定義標籤 中忽略的文本例如正則表達式拆分詞組的話,卻忽略標籤
輸入
<i>111 111 111</i> 222 333 444 <i>555 666</i> 888 999 <i>000 111</i>
輸出
<i>111 111 111</i>
222
333
444
<i>555 666</i>
888
999
<i>000 111</i>
我需要短語拆分單詞內的空間,但是定義標籤 中忽略的文本例如正則表達式拆分詞組的話,卻忽略標籤
輸入
<i>111 111 111</i> 222 333 444 <i>555 666</i> 888 999 <i>000 111</i>
輸出
<i>111 111 111</i>
222
333
444
<i>555 666</i>
888
999
<i>000 111</i>
試試這個:
/<i>[\d\s]*<\/i>|\d+/g
說明:
<i>
標記中的字符串,空格和數字都將包含在匹配中。|
交流發電機短路,所以它可以確保<i>111 222 333</i>
將被視爲單個單元,不分離到111
,222
,和333
。在測試了Regexr這裏,正常工作:http://regexr.com?2uf6j
如何在空間拆分只要而隨後的<
後面沒有斜槓?
>>> import re
>>> test = "<i>111 111 111</i> 222 333 444 <i>555 666</i> 888 999 <i>000 111</i>"
>>> split = re.compile(" (?![^<]*</)")
>>> split.split(test)
['<i>111 111 111</i>', '222', '333', '444', '<i>555 666</i>', '888', '999', '<i>000 111</i>']
如果標籤可以嵌套,但(這是有原因的正則表達式是不是非常適合這類問題),這將失敗。
你是什麼意思是「定義標籤」 - 任何標籤? – Chronial
改爲使用[DOM](http://php.net/dom)。查找沒有子節點並分割內容的文本節點。 –
你在用什麼語言?是否所有的例子都很簡單(即沒有嵌套標籤,沒有xml註釋,沒有CDATA塊) – Jens