任何人都可以使用正则表达式模式来检查以下内容。正则表达式
- 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