我試圖帶一個電話號碼,其格式爲+44或+4,後跟任意數字的數字或連字符,並替換+44或+ 4 +44或+4後跟一個空格。匹配正則表達式,但只替換第一部分 - Java
相信不用環顧四周,以配合全數字,但只能更換最初的前綴,我想要個大氣壓是
^[+]\d[0-9](?:([0-9]+))?
其數量(不帶連字符)相匹配,但是我想先行只會匹配數字,並不捕獲額外的數字,但它似乎捕捉整個事情。
任何人都可以指出我正確的方向,我做錯了什麼?
編輯: 爲了更清楚我的Java代碼
Pattern pattern = Pattern.compile("^[+]\\d[0-9](?:([0-9]+))?");
if(pattern.matcher("+441234567890").matches())
String num = pattern.matcher(title).replaceFirst("$0 $1");
感謝。
你沒有一個固定的前提或規則,答案會需要。這就是爲什麼它不適合你。 – sln
您不需要使用'matches',如果'replaceFirst'找不到匹配項,則會返回初始字符串。你只需要1個正則表達式來替換:'String num = Pattern.compile(「^([+] \\ d \\ d?)([\\ d - ] *)$」).matcher(title).replaceFirst 「$ 1 $ 2」);'。 –