此代碼在JavaScript中可用,可以在java中做類似的事情嗎? (得到一個通配符的字符串值)如何獲取字符串Java中的通配符的值?
var a = "HI MY NAME IS BOB"
var b = /HI MY NAME IS (.*)/
alert("HI " + b.exec(a)[1])
此代碼在JavaScript中可用,可以在java中做類似的事情嗎? (得到一個通配符的字符串值)如何獲取字符串Java中的通配符的值?
var a = "HI MY NAME IS BOB"
var b = /HI MY NAME IS (.*)/
alert("HI " + b.exec(a)[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)
會給第一捕獲組的值從正則表達式,即(.*)
同時檢查第一個字符串是'HI',當你的正則表達式是'HY'時,它似乎是一個錯誤的問題。 –
謝謝@AVolpe:我改正了它。 – anubhava
@AVolpe,yup,typo –
你需要的類是Pattern
。它的功能與regex
類似,但機制不同。 Here是文檔的鏈接。
您要找的是java.util.regex包。
正則表達式的語法是一個完全不同的答案,但我假設你在這裏有點熟悉它。
要在Java中使用正則表達式,您需要創建兩個對象:Pattern
和Matcher
。
引用的文檔,一個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));
這是一個明確而且很好的答案,但anubhava已經提供了同樣的事情。 –
這不完全是你問什麼,但我想盡量小的幫助。您可以使用substring()打印出「BOB」。這是什麼爲我工作:字符串a =新字符串(「你好我的名字是鮑勃」); System.out.printf(「此打印爲Bob \ n%s」,a.substring(14));子字符串從索引14開始並打印到字符串的末尾。
我想到了這一點,但已經很簡單了,我需要什麼 –
你的問題根本不清楚?付出一些努力來闡述。 –
你已經標記了你的問題'regex'。你知道正則表達式是什麼嗎? – khelwood
使用[this](http://www.regexplanet.com/advanced/java/index.html)嘗試正則表達式 –