[英]java equivalent of python regex
我是android開發的新手。 而現在我對正則表達式模式感到震驚。 我曾嘗試過很多東西但是徒勞無功。
我試圖找到java的等價的正則表達式"r'\\^\\d+\\~[A-Za-z~ ]+'"
這是用python編寫的。
提前致謝
編輯:
其實我想解析字符串:
“0~XYZ~Xamp Vampire~XMP~吸血鬼Cenet ~~ 2013-7-9-16-39-25 ~~~~ ^ 12345~VAMPIRE CITY~吸血鬼城~VMC~吸血鬼中心~VPC~Xamp中心~XMPC~ Xamper VC~XMVX~07.50~09.45~01.55~1111111 ~~~~~~~~ 0001001000 ~~~~~~~~~~~ MAIL_EXPRESS~4640~1~0~0~2013-07-08~2018- 07-08〜84〜43〜MAIL_EXPRESS:84:1085,1085,675,0,575,0:650,650,415,315,355,965:460,460,295,260,250,720:245,245,165,100,145,345:280,280,190,0,165,0:135,135,90,90,80,170:55,45,40,10, 35,45:0,0,0,0,0,0:40,30,40,0,40,40〜0〜0 ~~ 60~1~6303 ~~~城際快車~~ 1~SR ~~ BG ~~~ 10010〜,,恩:,, GS:,, GSLRD:,, GS:,, 2S:,, 2S:,, 2S:,, 2S:d,D1,2S:C,C1,CC: ,, 2S:,, 2S:,, 2S:,, 2S:,, 2S:,, 2S:,, 2S:,, 2S:,, 2S:,, GSLR:〜0〜”
我在python中寫了正則表達式reg1=re.compile(r'\\^\\d+\\~[A-Za-z~ ]+')
它給了我一個結果['^12345~VAMPIRE CITY~Vampire City~VMC~Vampire Center~VPC~Xamp Center~XMPC~Xamper VC~XMVX~']
作為數組。 我只想在java中重現這一點。 我嘗試了很多組合和npinti的建議,但都失敗了。 請幫忙。
這應該工作: r'\\\\^\\\\d+~[A-Za-z~ ]+
。 應該匹配r
后跟一個'
,然后接着是^
,一個或多個數字后跟一個~
和字母一次或多次重復, ~
和空白空間。
在java中, \\
是一個特殊的字符,所以它需要被轉義,這就是為什么我們在正則表達式引擎所需的\\
前面有額外的\\
。
編輯:我無法找到以r'
開頭的python正則表達式,所以我假設你需要匹配它。
如果不是這種情況,只需使用\\\\^\\\\d+~[A-Za-z~ ]+
。
編輯:
這段代碼似乎有效:
String file = "0~XYZ~Xamp Vampire~XMP~Vampire Cenet~~2013-7-9-16-39-25~~~~^12345~VAMPIRE CITY~Vampire City~VMC~Vampire Center~VPC~Xamp Center~XMPC~Xamper VC~XMVX~07.50~09.45~01.55~1111111~~~~~~~~0001001000~~~~~~~~~~~MAIL_EXPRESS~4640~1~0~0~2013-07-08~2018-07-08~84~43~MAIL_EXPRESS:84:1085,1085,675,0,575,0:650,650,415,315,355,965:460,460,295,260,250,720:245,245,165,100,145,345:280,280,190,0,165,0:135,135,90,90,80,170:55,45,40,10,35,45:0,0,0,0,0,0:40,30,40,0,40,40~0~0~~60~1~6303~~~Intercity Express~~1~SR~~BG~~~10010~,,En:,,GS:,,GSLRD:,,GS:,,2S:,,2S:,,2S:,,2S:D,D1,2S:C,C1,CC:,,2S:,,2S:,,2S:,,2S:,,2S:,,2S:,,2S:,,2S:,,2S:,,GSLR:~0~";
Pattern p = Pattern.compile("\\^\\d+\\~[A-Za-z~ ]+");
Matcher m = p.matcher(file);
if(m.find())
{
System.out.println(m.group(0));
}
System.out.println("Finished");
產量:
^12345~VAMPIRE CITY~Vampire City~VMC~Vampire Center~VPC~Xamp Center~XMPC~Xamper VC~XMVX~
Finished
整個r'
似乎給了我一些麻煩,實際上我在之前的編輯中省略了一個初始的\\\\
(現在已經修復了)。 我基本上使用了@Kent建議的相同的正則表達式(所以他應該是應該被接受的答案)。 我只是添加了一些java代碼,以更好地幫助你得到你想要的:)。
你只需用雙反斜杠替換反斜杠。 嘗試使用此字符串(在java中)作為正則表達式:
String myRegex = "\\^\\d+\\~[A-Za-z~ ]+";
經過三個小時的狩獵(因為我是android的初學者),我終於找到了正確的東西!
String myRegex = "[\\^]\\d{5}~[A-Za-z~ ]+";
這給了我我需要的東西。 感謝所有試圖幫助我的人:-)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.