簡體   English   中英

如何在Java中標記字符串時轉義定界符

[英]How to escape delimiter while tokenizing string in java

我有一個正則表達式模式,例如"(\\\\d{4},\\\\d{2},\\\\d{2} :\\\\d{2}:\\\\d{2}:\\\\d{2})"我正在將此模式作為參數傳遞給一個函數,該函數基於","標記輸入字符串。

例:

func((\\d{4},\\d{2},\\d{2} :\\d{2}:\\d{2}:\\d{2}),func(n))";

標記時如何在正則表達式中轉義逗號?

您能否發布將字符串標記化的函數? 這樣可以對您的代碼有所幫助。

如果沒有此類信息,則可以按如下方式使用split()(如果要執行的所有操作都在“,”上拆分):

String s = "Messages,Hello\,World,Hobbies,Java\,Programming";
System.out.println(Arrays.toString(s.split("(?<!\\\\),")));

請參閱-http: //www.javacreed.com/how-to-split-a-string-with-escaped-delimiters/

您可以將代碼替換為:

String str = "(\\d{4}\\,\\d{2}\\,\\d{2} \\d{2}:\\d{2}:\\d{2}), func(a)";
String[] tokens = str.split("(?<!\\\\),");
System.out.println(Arrays.toString(tokens));

這將為您提供令牌的字符串數組,拆分為“,”

@Derryl Thomas答案可能是正確的答案。 這是另一種技術。

  1. 使用其他內容在正則表達式中表示逗號。
  2. 根據逗號分割。
  3. 將“其他”更改回逗號。

例如:

  1. 代替"(\\\\d{4},\\\\d{2},\\\\d{2} :\\\\d{2}:\\\\d{2}:\\\\d{2})"
    使用"(\\\\d{4}boppity\\\\d{2}boppity\\\\d{2} :\\\\d{2}:\\\\d{2}:\\\\d{2})"
  2. 根據逗號進行拆分。
  3. 將正則表達式中的“ boppity”更改為“,”; 也許像這樣:
    newStringVariable = yourStringVariable.replace("boppity", ",")

暫無
暫無

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

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