2015-01-02 35 views
0

此代碼在JavaScript中可用,可以在java中做類似的事情嗎? (得到一個通配符的字符串值)如何獲取字符串Java中的通配符的值?

var a = "HI MY NAME IS BOB" 

    var b = /HI MY NAME IS (.*)/ 

    alert("HI " + b.exec(a)[1]) 
+0

你的問題根本不清楚?付出一些努力來闡述。 –

+0

你已經標記了你的問題'regex'。你知道正則表達式是什麼嗎? – khelwood

+0

使用[this](http://www.regexplanet.com/advanced/java/index.html)嘗試正則表達式 –

回答

1

也許你需要找到捕獲組#1

Pattern p = Pattern.compile("(?i)Hi MY NAME IS (.*)"); 
Matcher m = p.matcher("Hi MY NAME IS BOB"); 
if (m.find()) { 
    System.out.println("Group #1: " + m.group(1)); // BOB 
} 
  • (?i)是忽略大小寫匹配
  • m.group(1)會給第一捕獲組的值從正則表達式,即(.*)
+1

同時檢查第一個字符串是'HI',當你的正則表達式是'HY'時,它似乎是一個錯誤的問題。 –

+0

謝謝@AVolpe:我改正了它。 – anubhava

+0

@AVolpe,yup,typo –

0

你需要的類是Pattern。它的功能與regex類似,但機制不同。 Here是文檔的鏈接。

1

您要找的是java.util.regex包。

正則表達式的語法是一個完全不同的答案,但我假設你在這裏有點熟悉它。

要在Java中使用正則表達式,您需要創建兩個對象:PatternMatcher

引用的文檔,一個Pattern對象是「正則表達式的編譯表示」,和一個Matcher對象是「通過解釋Pattern上的字符序列執行匹配操作的引擎」。

換句話說,您使用Pattern定義您的正則表達式,並使用Matcher來應用它。

讓我們走這條線,由線:

import java.util.regex.*; 
String a = "MY NAME is BOB"; 

顯然,你需要導入的包,並確定你要申請的正則表達式的字符串。

Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)"); 

Pattern.compile需要String表示正則表達式並返回一個Pattern

Matcher match = wildcard.matcher(a); 

Pattern對象有一個實例方法,matcher,帶您要應用Pattern字符串,並返回一個Matcher

System.out.println(match.group(1)); 

調用match.group(n)返回字符串第n個括號的匹配(更精確地說,所述n個捕獲組)在正則表達式。 match.group(0),相當於match.group(),返回表示您的整個匹配的字符串。在這種情況下,我們使用的是match.group(1),因爲我們想要匹配我們的正則表達式中唯一的圓括號 - 最後的(.*)

全部放在一起,我們得到:

import java.util.regex.*; 
String a = "MY NAME is BOB"; 
Pattern wildcard = Pattern.compile("HI MY NAME IS (.*)"); 
Matcher match = wildcard.matcher(a); 
System.out.println(match.group(1)); 
+0

這是一個明確而且很好的答案,但anubhava已經提供了同樣的事情。 –

0

這不完全是你問什麼,但我想盡量小的幫助。您可以使用substring()打印出「BOB」。這是什麼爲我工作:字符串a =新字符串(「你好我的名字是鮑勃」); System.out.printf(「此打印爲Bob \ n%s」,a.substring(14));子字符串從索引14開始並打印到字符串的末尾。

+0

我想到了這一點,但已經很簡單了,我需要什麼 –

相關問題