[英]Regular Expression for pattern matching
任何人都可以幫助我修復正則表達式以查找兩個@ 符號之間的子字符串。
fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk.
現在我想要檢索這兩個 HELLO 子字符串。 提前致謝。 這有助於我在檢索數據時進行模式匹配。
這將匹配@
字符之間的文本:
(?<=@).*?(?=@)
這些是兩端的環視(非消耗匹配),我在兩者之間使用了非貪婪匹配,因此匹配不會一直運行到下一個@
包圍匹配的結尾
如果你想要一個優雅的單線提取所有這些 phrax,請執行以下操作:
String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");
下面是一些測試代碼:
public static void main(String[] args) {
String input = "fghgkghfk@hello@ggjgkglgll@hello@ghfufjkfk";
String[] phrases = input.replaceAll("(^.*?@)|(@[^@]*$)", "").split("@.*?@");
System.out.println(Arrays.toString(phrases));
}
輸出:
[hello, hello]
String text = "fghgkghfk@hello1@ggjgkglgll@hello2@ghfufjkfk";
Pattern ptrn = Pattern.compile("@(\\w+)@");
Matcher mtchr = ptrn.matcher(text);
while(mtchr.find())
{
String match = mtchr.group(1);
System.out.println("Match = <" + match + ">");
}
@
之間字符串的簡單正則表達式:
'@(.*?)@'
解釋:
@ # Match starts at literal @
(.*?) # Capture everything inbetween (non-greedy)
@ # Match ends at literal @
在這里查看它的實際效果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.