2015-07-20 39 views
-3

我想從段落中找出特定的詞。我用邊界找到一個。考慮下面的例子。邊界無法找到段落中的特定關鍵字

String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,"; 
String keyword = "Hell"; 
boolean matches = var.matches(".*\\b"+keyword+\\b.*"); 
System.out.println(matches); 

當我在UNIX服務器上運行它時,此代碼給了我以下錯誤。

java.util.regex.PatternSyntaxException:鄰近索引5
非法/不支持轉義序列。 \ bTMTH_EQUIP_IDLE_REASON \ b。
^
在java.util.regex.Pattern.error(Pattern.java:1713)
在java.util.regex.Pattern.escape(Pattern.java:2177)
在java.util.regex中.Pattern.atom(Pattern.java:1952)
at java.util.regex.Pattern.sequence(Pattern.java:1834)
at java.util.regex.Pattern.expr(Pattern.java:1752)
在java.util.regex.Pattern.compile(Pattern.java:1460)
在java.util.regex.Pattern中。(Pattern.java:1133)
在java.util.regex.Pattern.compile(帕ttern.java:823)
在java.util.regex.Pattern.matches(Pattern.java:928)
在java.lang.String.matches(String.java:2091)在com.acc.directory
.scanner.SDScanner.main(SDScanner.java:309)

我試圖取代\\b\\\\b,但沒有奏效。它返回false。 任何人都可以請幫我我應該如何解決這個問題。我到處搜索,但只給我一個答案,以取代\\b\\\\b,但它不適合我。

PS。這只是一個虛擬的例子來展示我嘗試過什麼以及我想要什麼輸出。我用真實數據運行我的代碼,並從該輸出中獲取錯誤。

+0

看起來像你忘了報價:'布爾匹配= var.matches(「。* \\ b」+關鍵字+「\\ b。*」);' –

+0

請檢查第3行中的引號。什麼是'var '? –

+0

抱歉,我在發佈問題時犯了錯誤。但在我的代碼中,這些事情是正確的。請引導我使用邊界。 –

回答

0

你需要應用匹配函數對para變量,你也忘了把"之前第二\\b

String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,"; 
String keyword = "Hell"; 
boolean matches = para.matches(".*\\b"+keyword+"\\b.*"); 
              ^
System.out.println(matches); 
+0

對不起,我在發佈問題時犯了錯誤。但在我的代碼中,這些事情是正確的。請引導我使用邊界。 –

+0

你用'para'替換'var'嗎? –

+0

是的。這只是一個虛擬的例子來顯示我做了什麼 –

0

如果我更換由paravar並修復行情在第3行,matches()返回true:

@Test 
public void testName() throws Exception 
{ 
    String para = "Hi how are you. I'm harshita. Hello. Hell. Helld, Hell,"; 
    String keyword = "Hell"; 
    boolean matches = para.matches(".*\\b"+keyword+"\\b.*"); 
    logger.debug(matches); 
} 

輸出:

08:52:18.059 [main] temp.temp - true 
+0

是你的代碼與我的不同嗎? –

+0

它在我的本地系統中運行良好,但不在unix服務器中運行。那裏是給出錯誤。 –

相關問題