簡體   English   中英

Java中的特殊字符后的正則表達式

[英]Regex after a special character in Java

我在Java中使用正則表達式從大學的房間列表中獲取特定輸出。

清單中的支出如下所示:

  • (A55:G260)實驗室260
  • (A55:G292)Grupperom 292
  • (A55:G316)Grupperom 316
  • (A55:G366)Grupperom 366
  • (HDS:FLØYEN)Fløyen(附錄)
  • (ODO:PC-STUE)Pulpakammeret(PC-stue)
  • (SALEM:KONF)Konferanserom

我想獲得介於冒號和括號之間的值。

我目前使用的正則表達式是:

pattern = Pattern.compile("[:]([A-Za-z0-9ÆØÅæøå-]+)");
matcher = pattern.matcher(room.text());

我包括了ÆØÅ,因為其中一些房間里有挪威字母。

不幸的是,正則表達式還在輸出中包括了建築代碼(例如“ A55”)...像這樣出來:

A55
A55
A55
:G260
:G292
:G316

關於如何解決這個問題的任何想法?

問題不在於您的正則表達式。 您需要引用group( 1 )作為匹配結果。

while (matcher.find()) {
  System.out.println(matcher.group(1));
}

但是,您可以考慮使用否定字符類。

pattern = Pattern.compile(":([^)]+)");

您可以嘗試這樣的正則表達式:

public static void main(String[] args) {
    String s = "(HDS:FLØYEN) Fløyen (appendix)";
    // select everything after ":" upto the first ")" and replace the entire regex with the selcted data
    System.out.println(s.replaceAll(".*?:(.*?)\\).*", "$1"));
    String s1 = "ODO:PC-STUE) Pulpakammeret (PC-stue)";
    System.out.println(s1.replaceAll(".*?:(.*?)\\).*", "$1"));
}

O / P:

FLØYEN
PC-STUE

可以嘗試使用String Opreations,如下所示:

String val = "(HDS:FLØYEN) Fløyen (appendix)";

if(val.contains(":")){

    String valSub = val.split("\\s")[0];
    System.out.println(valSub);

    valSub = valSub.substring(1, valSub.length()-1);

    String valA = valSub.split(":")[0];
    String valB = valSub.split(":")[1];

    System.out.println(valA);
    System.out.println(valB);

}

輸出:

(HDS:FLØYEN)
HDS
FLØYEN 

導入java.util.regex.Matcher; 導入java.util.regex.Pattern;

類測試{public static void main(String args []){

  // String to be scanned to find the pattern.
  String line = "(HDS:FLØYEN) Fløyen (appendix)";
  String pattern = ":([^)]+)";

  // Create a Pattern object
  Pattern r = Pattern.compile(pattern);

  // Now create matcher object.
  Matcher m = r.matcher(line);
  while (m.find()) {
    System.out.println(m.group(1));
}

}}

暫無
暫無

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

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