我需要在文本中标识字符串并将其替换为空字符串。问题是,它并不总是作为一个单词本身存在。每个字母或一组字母之间将存在空格字符。例如:
对于“体面”一词,我可能会面临以下价值观。 D ec ent, De ce nt, 没有。
有没有办法使用“Decent”字作为任何正则表达式的输入来识别这些字符串? 我对正则表达式很新。请帮忙!!
TIA!
答案 0 :(得分:1)
如果您使用
'D?e?c?e?n?t?'
它会将单词与额外的空格匹配
答案 1 :(得分:1)
表达式"D\s*e\s*c\s*e\s*n\s*t"
将会这样做。每个字母后跟零个或多个空格。实际上\s
是“空白字符”。如果您只想要文字空格,可以将\s*
替换为*
(空格后跟星号)。
答案 2 :(得分:1)
\bD\s*e\s*c\s*e\s*n\s*t\s*
所以你匹配D ec ent, De ce nt, De ce n t, decent Decent
但不是blade centimeter
答案 3 :(得分:0)
首先是一些代码:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class WordsWithSpaces {
public static void main(String[] args) {
String test = "Descent D escent De s cent desce nd";
String word = "descent";
String pattern = "";
for(int i=0; i<word.length();i++) {
pattern = pattern+word.charAt(i)+"\\s*";
}
System.err.println("pattern is: "+pattern);
Pattern p = Pattern.compile(pattern,Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher(test);
while(m.find()) {
String found = test.substring(m.start(),m.end());
System.err.println(found+" matches");
}
}
}
现在解释:\ s是空格的字符类。这包括空格和制表符以及(可能)换行符。在这段代码中,我取出了我要找的单词的每个字符,并附加“\ s”,其中“*”表示0或mor出现。
另外,为避免区分大小写,我在模式上设置了CASE_INSENSITIVE标志。
字符类在您选择的编程语言中可能没有相同的名称,但应该有一个用于空格。检查你的文件。