String abc = "||:::|:|::";
如果出現兩個|
和三個:
,它應該返回true。
我不知道如何使用「正則表達式」,或者如果它是正確的使用方法。 abc
字符串中沒有特定的模式。如何查找字符串中的兩個特定字符?
String abc = "||:::|:|::";
如果出現兩個|
和三個:
,它應該返回true。
我不知道如何使用「正則表達式」,或者如果它是正確的使用方法。 abc
字符串中沒有特定的模式。如何查找字符串中的兩個特定字符?
這是假設你正在尋找兩個'|'一個接一個,三個一樣「:' 一個接着另一個。使用下面的單個正則表達式。
".*||.*:::.*"
如果你正在尋找只是檢查字符的存在和他們不論其順序,然後使用使用兩個正則表達式String.matches
方法與邏輯與
".*|.*|.*"
".*:.*:.*:.*"
這裏是一個cheat sheet for regular expressions。學習起來相當簡單。查看文檔中的組和量詞來理解上述表達式。
誰說'''必須放在':::'之前?在[這個評論](http://stackoverflow.com/questions/26746658/how-can-i-look-for-two-specific-characters-in-a-string#comment42078572_26746658)OP聲明「包含|和:無論的位置「。 – Pshemo 2014-11-04 23:06:17
使用正則表達式是一個壞主意,特別是如果沒有特定的順序給他們。作出這樣的計數次數的字符sppears在一個字符串的函數,並使用:
public int count(String base, char toFind)
{
int count = 0;
char[] haystack = base.toCharArray();
for (int i = 0; i < haystack.length; i++)
if (haystack[i] == toFind)
count++;
return count;
}
String abc = "||:::|:|::";
if (count(abc,"|") >= 2 && count(abc,":") >= 3)
{
//Do some code here
}
我最喜歡的用於搜索字符的字符串數量的方法是int num = s.length() - s.replaceAll("|","").length();
你能做到這一點同時適用於和測試這些整數。
如果你想測試一個正則表達式中的所有條件,你可以使用look-ahead(?=condition)
。
你的正則表達式可以像
String regex =
"(?=(.*[|]){2})"//contains two |
+ "(?=(.*:){3})"//contains three :
+ "[|:]+";//is build only from : and | characters
現在你可以用matches
使用它像
String abc = "||:::|:|::";
System.out.println(abc.matches(regex));//true
abc = "|::::::";
System.out.println(abc.matches(regex));//false
無論如何,我可以避開正則表達式,寫自己的方法,將計算的數|
和:
,並檢查這個數字是否大於或等於2和3.您可以使用中的所以你的測試代碼可能看起來像
public static boolean testString(String s){
int pipes = StringUtils.countMatches(s, "|");
int colons = StringUtils.countMatches(s, ":");
return pipes>=2 && colons>=3;
}
或
public static boolean testString(String s){
return StringUtils.countMatches(s, "|")>=2
&& StringUtils.countMatches(s, ":")>=3;
}
沒有測試,但這應該工作
Pattern.compile("^(?=.*[|]{2,})(?=.*[:]{3,})$");
整個字符串由?=.*
閱讀並檢查羯羊允許的字符(|
)至少出現兩次。然後爲:
做了同樣的事情,只有這個必須至少匹配三次。
檢查了它,似乎沒有工作。 – 2014-11-05 00:45:37
你的意思是它應該返回'true',如果它包含'|| :::',或者它包含'||'和':::'而不管順序或位置('::: ||'或':||:| :::'...)? – MadProgrammer 2014-11-04 22:59:21
是真的,如果它包含|和:不管位置 – user3413152 2014-11-04 23:00:23
是'::|:|:「'還正確(它包含兩個'|'和三個':')? – Pshemo 2014-11-04 23:02:19