任何人都可以使用正則表達式模式來檢查以下內容。正則表達式
- xxxxxxxxxxxxxxxxxxxxxxxxxx $ S
- xxxxxxxxxxxxxxxxxxxxxxxxxx $ S
線,$ somewhitespacesS結束。
我想用這個作爲分隔符爲stringscanner打破長字符串(在Java)
THX
任何人都可以使用正則表達式模式來檢查以下內容。正則表達式
線,$ somewhitespacesS結束。
我想用這個作爲分隔符爲stringscanner打破長字符串(在Java)
THX
你可以使用這個表達式:
/\$\s+S$/
編輯:基於您的評論可能你需要這個:
int count = str.split("\\$\\s+S(\\n|$)").length;
現在count
將爲您提供字符串str
中以\\$\\s+S
結尾的格式的數量(可選地後跟換行符或文本結尾)。
更新:基於來自其他答案之一的評論。看起來你正試圖計算最後有$ S
的字符串中的行數。爲此,您可以使用positive lookahead這樣的:
.*(?=\$\sS)
這裏是一個將使用這個表達式對給定subjectString
,並把所有的比賽到一個數組一些Java代碼:
List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile(".*(?=\\$\\sS)");
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}
如果再想要得到那些比賽的數量,你可以這樣做:
int count = matchList.size();
如果subjectString
等於:
xxxxxxxxxxxxxxxxxxxxxxxxxx $ S <-- Match
xxxxxxxxxxxxxxxxxxxxxxxxxx <-- No Match
xxxxxxxxxxxxxxxxxxxxxxxxxx $ S <-- Match
// count = 2 in this case
您可以檢出的this site一些很好的正則表達式的信息(或谷歌自己),而是幫助你理解這個特殊的正則表達式,這裏有一些評論:
"." + // Match any single character that is not a line break character
"*" + // Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
"(?=" + // Assert that the regex below can be matched, starting at this position (positive lookahead)
"\\$" + // Match the character 「$」 literally
"\\s" + // Match a single character that is a 「whitespace character」 (spaces, tabs, and line breaks)
"S" + // Match the character 「S」 literally
")"
您可以使用像這樣:\\$\\s+S$
。
是的,我們可以幫助你。你到目前爲止嘗試過什麼? [Here's](http://www.regular-expressions.info/tutorial.html)是一個很好的參考。 – Wiseguy 2012-04-03 15:10:57
你使用哪種正則表達式?如果你打算在代碼中使用它,什麼語言? – Robbie 2012-04-03 15:13:28