我有
形式的字符串^COBUYE\rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \fs20\insrsid15797378 \hich\af39\dbch\af31505\loch\f39 R-NAME-FIRST COBUYER-NUMBER="1"\rtlch\fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid10175635\charrsid8585274 \cell
现在我想从这个字符串中创建一个类似^COBUYER-NAME-FIRST COBUYER-NUMBER="1"
的字符串。为此我尝试了这个正则表达式。
\\b(?:\\\\[a-zA-Z]+(-?[0-9]+)? ?)+ ?\\b
当我使用此正则表达式时
String tag = "^COBUYE\\rtlch\\fcs1 \\af39\\afs20 \\ltrch\\fcs0 \\fs20\\insrsid15797378 \\hich\\af39\\dbch\\af31505\\loch\\f39 R-NAME-FIRST COBUYER-NUMBER=\"1\"\\rtlch\\fcs1 \\af0\\afs20 \\ltrch\\fcs0 \\f0\\fs20\\insrsid10175635\\charrsid8585274 \\cell ";
//String tag = "\\rtlch\\fcs1^COBUYE\\rtlch\\fcs1 \\af39\\afs20 \\ltrch\\fcs0 \\fs20\\insrsid15797378 \\hich\\af39\\dbch\\af31505\\loch\\f39 R-NAME-FIRST COBUYER-NUMBER=\"1\"\\rtlch\\fcs1 \\af0\\afs20 \\ltrch\\fcs0 \\f0\\fs20\\insrsid10175635\\charrsid8585274 \\cell ";
String controlWordRegex = "\\b(?:\\\\[a-zA-Z]+(-?[0-9]+)? ?)+ ?\\b";
StringBuffer sb = new StringBuffer();
Pattern controlWordRegexPattern = Pattern.compile(controlWordRegex, Pattern.DOTALL);
Matcher controlWordRegexPatternMatcher = controlWordRegexPattern.matcher(tag);
while (controlWordRegexPatternMatcher.find()) {
String rtfControlWord = controlWordRegexPatternMatcher.group();
String replacementText = "";
controlWordRegexPatternMatcher.appendReplacement(sb, replacementText);
}
controlWordRegexPatternMatcher.appendTail(sb);
然后当条件rtfControlWorld变为
时String rtfControlWord = \rtlch\fcs1 \af39\afs20 \ltrch\fcs0 \fs20\insrsid15797378 \hich\af39\dbch\af31505\loch\f39
和sb变为^COBUYE
现在又来了条件,这次rtfControlWorld变成了
String rtfControlWord = \fcs1 \af0\afs20 \ltrch\fcs0 \f0\fs20\insrsid10175635\charrsid8585274 \cell
和sb变为^COBUYER-NAME-FIRST COBUYER-NUMBER="1"\rtlch
为什么第二次从\fcs1
而不是\rtlch\fcs1
启动控制字? \rtlch
也是以\
开头的?我怎样才能让它工作,所以我只能^COBUYER-NAME-FIRST COBUYER-NUMBER="1"
而不是^COBUYER-NAME-FIRST COBUYER-NUMBER="1"\rtlch
?
同样在第二个标签的情况下,我得到\rtlch^COBUYER-NAME-FIRST COBUYER-NUMBER="1"\rtlch
。我该如何纠正?
由于