簡體   English   中英

JAVA正則表達式帶空格

[英]JAVA regular expression with space

我的以下表達式有問題:

String REGEX_Miasto_Dwu_Czlonowe="\D+\s\D+";

Pattern pat_Miasto = Pattern.compile(REGEX_Miasto_Dwu_Czlonowe);
Matcher mat_Miasto_Dwu_Czlonowe = pat_Miasto.matcher(adres);

因為上面的模式匹配

"80-227 GDAŃSK                              DOSTUDZIENKI 666";
 "83000  PRUSZCZ GDANSKI                     UL. TYSIACLECIA 666"; 

但是它只能匹配以下表達式: "PRUSZCZ GDANSKI UL. TYSIACLECIA 666";

THX尋求幫助。

您在正則表達式中遇到了一些問題。

  1. 首先,您必須將所有反斜杠更改為雙反斜杠,但是如果您有匹配項,則可能是復制和粘貼錯誤
  2. \\ D匹配非數字。 這是您的意圖嗎?

    \\ D + \\ s \\ D +

正則表達式可視化

Debuggex演示

因此,您要匹配一些非數字,后跟一個空格,再匹配一些非數字

我認為您的表情匹配或多或少是偶然的。

這可能是您的正則表達式的解決方案:

^\d+\D+\d+$

正則表達式可視化

Debuggex演示

如果要將第二行作為文字匹配,那么只有此行匹配,您可以使用:

Matcher.quoteReplacement(String s)

用一個簡單的String構建這種表達式。 所有控制字符均已轉義。

您的正則表達式匹配任意數量的非數字\\D+空格\\s然后匹配任意數量的非數字。 因此它匹配第一個字符串:

80-227 GDAŃSK                              DOSTUDZIENKI 666
//    ^__________\D+_________^^____________\D+_________^
//                           |
//                         a space

我想你要:

[^\s\d]+\s[^\s\d]+

任意數量的非空格/非數字,然后為空格的任意數量的非空格/非數字。

暫無
暫無

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

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