簡體   English   中英

正則表達式拆分字符串中的標簽

[英]regex splitting tags in the string

我有以下正則表達式(<.*?>.*?</.*?>|[\w[-]]+)\p{Punct}*它適用於大多數帶標簽的字符串,但如果前面沒有標簽按空格,然后它會在找到匹配項時破壞標簽。

請幫助我修改此正則表達式,使其不會破壞標簽。 我所尋找的只是在空格上分割,但如果空間在標簽內,則不是。

例如:

BIRD-<abc attr="co_1">ab</span> @apos;<abc attr="co_12">cd</span>FEE DEF

應該分成:

BIRD-&ltabc attr="co_1">ab</span> 
@apos;<abc attr="co_12">cd</span>FEE  
DEF

我目前正在使用匹配器來匹配此模式並獲取令牌

Matcher matcher = REGEX.matcher(newString);

while (matcher.find()) 
{
    token = matcher.group();
}

嘗試這個:

.*?<.*?>.*?</.*?>[^\s]*

它將產生您期望的結果。

我會警惕使用正則表達式執行這種類型的解析。 如果屬性包含 > 和/或 < 字符,您建議的模式以及它的各種改編可能會開始表現得很奇怪。 例如,以下示例會拋出您的模式。

<element attr="></>">value</element>

每當您需要解析或處理 XML 文件時,我建議您考慮使用適當的 XML 解析器。 請參閱此答案以獲得更長的解釋。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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