我需要想出一個正則表達式來解析我的輸入字符串。我的輸入字符串的格式爲:使用正則表達式分析字符串
[alphanumeric].[alpha][numeric].[alpha][alpha][alpha].[julian date: yyyyddd]
如:
A.A2.ABC.2014071
3.M1.MMB.2014071
我需要從3號位串,並想知道什麼是做到這一點的最簡單的方法。
期望的結果:
A2.ABC.2014071
M1.MMB.2014071
我需要想出一個正則表達式來解析我的輸入字符串。我的輸入字符串的格式爲:使用正則表達式分析字符串
[alphanumeric].[alpha][numeric].[alpha][alpha][alpha].[julian date: yyyyddd]
如:
A.A2.ABC.2014071
3.M1.MMB.2014071
我需要從3號位串,並想知道什麼是做到這一點的最簡單的方法。
期望的結果:
A2.ABC.2014071
M1.MMB.2014071
使用這個表達式:
\w.[A-Z]\d.[A-Z]{3}.\d{7}
使用上述正則表達式是這樣的:
String[] in = {
"A.A2.ABC.2014071", "3.M1.MMB.2014071"
};
Pattern p = Pattern.compile("\\w.[A-Z]\\d.[A-Z]{3}.\\d{7}");
for (String s: in) {
Matcher m = p.matcher(s);
while (m.find()) {
System.out.println("Result: " + m.group().substring(2));
}
}
我正在使用Java。 – user3411153
(?i)
將被視爲不區分大小寫。
(?i)^[a-z\d]\.[a-z]\d\.[a-z]{3}\.\d{7}$
這裏a-z
意味着從A到Z的任何字母和\d
意味着從0到9
任何數字現在,如果你想刪除第一節點前,然後用這個表達式和替換它與$1
(或者可以是\1
)
(?i)^[a-z\d]\.([a-z]\d\.[a-z]{3}\.\d{7})$
另一種選擇是用空代替以下:
(?i)^[a-z\d]\.
我能夠與表達式匹配。如何忽略點之前的第一個alpha? – user3411153
@ user3411153使用我答案中的最後兩個示例。或者我誤解了你的問題? –
我沒有辦法返回並更換$ 1。我實際上需要一個返回子字符串的正則表達式。 – user3411153
如果輸入字符串只是長格式,那麼除了前兩個字符之外,您希望所有的東西都可以。你可以安排與什麼來代替它們:
s/^..//
或者你可以安排捕捉到一切,除了前兩個字符:
/^..(.*)/
如果表達式是一個較大的字符串的一部分,那麼擊穿字母數字組件變得更加重要。
細節因託管正則表達式的語言而異。上面寫的符號可能是Perl或PCRE(Perl Compatible Regular Expressions)。許多其他語言也會接受這些正則表達式,但其他語言則需要調整。
歡迎來到Stack Overflow。當你詢問正則表達式時,它有助於(很多)識別將使用正則表達式的主機環境; Perl和PHP的答案通常有很大的不同。 –