任何人都可以幫助我修復找到兩個@符號之間的子字符串的正則表達式。模式匹配的正則表達式
例 - [email protected]@[email protected]@ghfufjkfk.
現在我想取回這兩個HELLO子字符串。 在此先感謝。 這有助於我在檢索數據時進行模式匹配。
任何人都可以幫助我修復找到兩個@符號之間的子字符串的正則表達式。模式匹配的正則表達式
例 - [email protected]@[email protected]@ghfufjkfk.
現在我想取回這兩個HELLO子字符串。 在此先感謝。 這有助於我在檢索數據時進行模式匹配。
這將@
字符之間不匹配的文本:
(?<[email protected]).*?([email protected])
這些都是查找變通任一端(非消耗比賽),我已經使用之間的非貪婪的比賽,所以比賽沒有按」牛逼一路跑到下一個@
包圍比賽結束
如果你想要一個優雅的一行提取所有這些phraxes,這樣做:
String[] phrases = input.replaceAll("(^.*[email protected])|(@[^@]*$)", "").split("@.*[email protected]");
下面是一些測試代碼:
public static void main(String[] args) {
String input = "[email protected]@[email protected]@ghfufjkfk";
String[] phrases = input.replaceAll("(^.*[email protected])|(@[^@]*$)", "").split("@.*[email protected]");
System.out.println(Arrays.toString(phrases));
}
輸出:
[hello, hello]
爲什麼你使用「後視」和「前瞻」?他們並不是真的需要在這裏。 –
@RohitJain我認爲他們是需要的 - 他不想在*之間的文本*之間匹配,而不是*包含*'@' – Bohemian
@Bohemian ..這也可以工作: - '@(。*?)@',並剛剛得到組1。 –
String text = "[email protected]@[email protected]@ghfufjkfk";
Pattern ptrn = Pattern.compile("@(\\w+)@");
Matcher mtchr = ptrn.matcher(text);
while(mtchr.find())
{
String match = mtchr.group(1);
System.out.println("Match = <" + match + ">");
}
謝謝泡沫..這符合我的要求 – HeyItsMe
不客氣。請投票並接受答案,如果你不介意 – amphibient
嘿對不起...我正在嘗試投票,但我沒有足夠的投票聲望....當我得到所需的聲望時,我肯定會投票。非常感謝 :) – HeyItsMe
字符串簡單的regex之間@
:
'@(.*?)@'
說明:
@ # Match starts at literal @
(.*?) # Capture everything inbetween (non-greedy)
@ # Match ends at literal @
看到它在行動here。
'修正正則表達式' - 您希望我們修復哪一個? –
請注意,如果您在'@'之間獲取內容,您還將獲得'ggjgkglgll'。你必須過濾掉。 –
對於簡單的分隔字符串,您可以使用split(「@」)並使用1和3索引。 –