我需要将短语拆分为单词,但忽略定义标记内的文本 例如
输入
<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>
答案 0 :(得分:1)
试试这个:
/<i>[\d\s]*<\/i>|\d+/g
说明:
<i>
标记内的字符串,空格和数字都将包含在匹配中。 |
交流发电机正在短路,因此确保将<i>111 222 333</i>
视为一个单元,不拆分为111
,{ {1}}和222
。在此处测试Regexr,工作正常:http://regexr.com?2uf6j
答案 1 :(得分:0)
如果下面的<
之后没有斜线,那么拆分空间怎么样?
>>> 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>']
如果标签可以嵌套,这将失败(这是正则表达式不适合此类问题的原因)。