我的标记系统现在如下:
- @issue
- @topic
- @subject
- #person
- #otherperson
- $company
- $othercompany
Mac上的其中一个应用程序(DEVONthink)专门处理@,因此我想将标记系统更改为:
- iissue
- ttopic
- ssubject
- pperson
- ootherperson
- ccompany
- oothercompany
感谢您的帮助!
答案 0 :(得分:2)
我只想在这里使用群组。记住group(0)总是整个匹配的String,所以我们使用group(2)和group(3)作为第二个字母,然后是其余的单词:
public static void main(String[] args) {
String[] words = {"@issue"
,"@topic"
,"@subject"
,"#person"
,"#otherperson"
,"$company"
,"$othercompany"};
String regex = "(.{1,1})(.{1,1})(.*)\\s*?";
Matcher m = Pattern.compile(regex).matcher("");
for (String word : words) {
m.reset(word).find();
String s = m.group(2) + m.group(2) + m.group(3);
System.out.println(s);
}
}
如果您知道自己的字词是由字母数字字符组成的,则可以将(.*?)
更改为更具体的字符组。例如(\\w*?)
或类似的东西。
如果修剪了所有单词,则结尾\\s*?
也可以省略。例如,这里的效果也很好:(.{1,1})(.{1,1})(\\w*)
。
此外,如果您知道标签以@,#或$开头的事实,这也可以起作用:([@#$])(.{1,1})(\\w*)
您也可以将find()
替换为matches()