簡體   English   中英

刪除兩個字符串之間的數據

[英]Remove data between two strings

我必須刪除兩個字符串之間的數據,如下所示

<PACKET>752</PACKET> 
  <TIME>23-Oct-2013 12:05:46 GMT Standard Time</TIME> 
  <INTERVAL>2</INTERVAL> 

<HEADER>hi this should not be printed only</HEADER>
<DATA></DATA>

在此,我必須刪除<HEADER></ HEADER>之間的數據。
有人可以為此給我正則表達式嗎?

我認為這可以通過RegEx做到:

String str="b1<HEADER>aaaaa</HEADER>b2";
String newstring = str.replaceAll("<HEADER[^>]*>([^<]*)<\\/HEADER>", "");
System.out.println(newstring);

打印b1b2

如果<HEADER>還有其他標簽,則上述操作將失敗。 考慮以下示例:

String str = "b1<HEADER>aa<xxx>xx</xxx>aaa</HEADER>b2";
String newstring = str.replaceAll("<HEADER[^>]*>([^<]*)<\\/HEADER>", "");
System.out.println(newstring);

打印: b1<HEADER>aa<xxx>xx</xxx>aaa</HEADER>b2

為了克服這一點並刪除包含的標簽,請使用以下命令:

newstring = str.replaceAll("<HEADER.+?>([^<]*)</HEADER>", "");

這將打印b1b2

Maroun認為這不是一個好主意,但是如果必須這樣做,那么這可能會起作用:

(?ms)(.*<HEADER>).*(<\/HEADER>.*)

這將捕獲直到第1組中的<HEADER>以及包括第2組中</HEADER>所有內容。然后,可以將兩者串聯以除去中間的位。

看到這里: http : //regex101.com/r/bC2eQ7

此RegEx用空字符串替換標簽內的所有內容:

String input = "<PACKET>752</PACKET>...<HEADER>hi this should be printed only</HEADER><DATA></DATA>";
String output = input.replaceAll("(?<=<HEADER>).*?(?=</HEADER>)", "");

結果:

<PACKET>752</PACKET>...<HEADER></HEADER><DATA></DATA>

暫無
暫無

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

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