我有一个问题-我似乎无法从字符串的开头/结尾删除新的行/空格。我\s
在正则表达式的开头和结尾使用,甚至.trim()
在得到字符串后使用,但无济于事。
public void extractInfo(String mydata) {
// regex to extract the user name
Pattern pattern = Pattern.compile("user:\\s*(.*)\\s+branch");
Matcher matcher = pattern.matcher(mydata);
// regex to extract the branch name
Pattern pattern2 = Pattern.compile("branch:\\s*(.*)\\s+changed");
Matcher matcher2 = pattern2.matcher(mydata);
// regex to extract the comment and write it in a variable
comment = mydata.replaceAll("(?s)\\s.*java;[0-9,.]+|.*java;NONE\\s", "");
// put the author name in a variable
matcher.find();
author = matcher.group(1).toString();
// put the branch name in a variable
matcher2.find();
branch = matcher2.group(1).toString();
author.trim();
comment.trim();
branch.trim();
}
这就是我用来提取信息的东西。
这是我使用StringBuilder附加提取的信息后得到的输出(保留的行):
git log --all -100 --before="2013-03-11" --branches=HEAD
--author="\(cholakov\)" --grep="^[#]*[0]*23922:[ ]*user:
修复了默认债券的消息
" --pretty="%H - %s ; %ad"
后面的新行user:
是导致当我尝试在cmd中执行命令时整个命令失败的原因,这就是我需要解决的问题。
这是我的输入(DataObjectParser.java;似乎无法保持格式; 1.94在新行上,并且每行之间没有跳过任何行):
用户:cholakov
分行负责人
更改的文件:DataObjectParser.java; 1.94
修复了默认债券的消息
我认为,.trim()
如果稍稍更改正则表达式,最终可以完全删除:
Pattern pattern = Pattern.compile("user:\\s*(.*?)\\s+branch");
Pattern pattern2 = Pattern.compile("branch:\\s*(.*?)\\s+changed");
comment = mydata.replaceAll("(?s)\\s*.*java;(?:[0-9,.]+|NONE)\\s*", "");
我分别对您的正则表达式进行了一些调整。即(.*)
放入一些,(.*?)
以便您可以删除所有尾随空格,并稍微简化了替换注释。尝试看看是否能解决您的问题^^
编辑:
尝试对注释运行最后一次替换:
comment = comment.replaceAll("^\\s*|\\s*$", "");
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句