[英]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.