簡體   English   中英

java相當於python正則表達式

[英]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.

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