我有一個文本文件,其中每行是下列任何組多個正則表達式與搜索算法
數字的隨機組合 - 英文字母 - 阿拉伯文字 - 標點符號
\ W它是由A-ZA-Z0-9_用於第一2組
\ p {InArabic}用於第三組
\ p {PUNCT},它由被!「#$%&「()* +, - 。/ :; < =>?@ []^_`{|}〜爲第五組p
我從here
這個信息我讀線。只有當我對這條線做些什麼的時候,如果這行包含阿拉伯字母AND(英文字母或Unicode符號)
看完這個post和post我想出了下面的表達式。顯然這是錯誤的,因爲我的輸出全錯了。 <
pattern = Pattern.compile("(?=\\p{InArabic})(?=[a-zA-Z])");
這裏的輸入
1
1a
a!
aش
شa
ششa
aشش
شaش
aشa
!aش
前三應該不匹配,但我的輸出顯示,沒有一個是匹配的。
編輯:對不起,我只是意識到,我忘了改變我的標題。但是如果你們中的任何人覺得搜索更好的性能,那麼請建議一個搜索算法。使用搜索算法,而不是正則表達式看起來很醜,但如果它表現更好,我會用它。多虧我讀了文章中,我瞭解到,我可以讓正則表達式更快,如果我把這個構造器,這樣它會被執行一次,而不是隻包括他們在我的循環從而被每次
pattern = Pattern.compile("(?=\\p{InArabic})(?=[a-zA-Z])");
matcher = pattern.matcher("");
您可以構建一個正則表達式,本質上是'({英語} + * {阿拉伯語} +)|({阿拉伯語} + * {英語} +)',或者你可以建立兩種模式,一個是阿拉伯語,一個是英語,只是看看他們是否匹配。後者可能會更清晰一些。或者,你可以拋棄正則表達式,直接在同一個字符串中直接搜索阿拉伯語和英語字符。 –
你用它來覆蓋兩種可能性。謝謝,但恐怕這個問題與我不完全理解如何寫出正確的表達,因此我的帖子。至於你建議的替代方案,我該怎麼做?我仍然需要一種方法來查看是否有任何阿拉伯文和英文字母在該字符串中。你建議哪種算法?因爲直接的方式是嵌套循環。與正則表達式相比,這不是很糟糕嗎? – user3340667