Dart,替换单词及其后的所有内容,直到第一个字母数字字符



我想在一个字符串中替换单词"hi"(包括大写和小写)以及之后的所有内容,直到第一个字母数字字符。

例如:

String text = "How are you ? Hi , I am fine . "
// or
String text = "How are you ? hi! I am fine . "

必须成为:

String text = "How are you ? I am fine . "

谢谢!

String replaceFromWordToNextWord(
String input, String word, String replacement) {
var re = RegExp("\b${RegExp.escape(word)}\b[^a-z\d]+", 
caseSensitive: false);
return input.replaceFirst(re, replacement);
}

在你的文本中,它是:

void main() {
var input = "How are you ? Hi , I am fine . ";
print(replaceFromWordToNextWord(input, "hi", "")); 
// Prints "How are you ? I am fine ."
}

如果您想要删除特定的部分,您可以使用捕获组(s|^)来捕获字符串的开头或空白字符。

然后匹配Hihi,后面跟着除字母数字以外的任何字符。

(s|^)[hH]i[^a-zA-Z0-9]*

在替换中使用第一个捕获组。

void main() {
String s = """How are you ? Hi , I am fine . 
How are you ? hi! I am fine . 
hi! I am fine . """;
var pattern = RegExp(r"(s|^)[hH]i[^a-zA-Z0-9]*");
print(s.replaceAllMapped(pattern, (match) => '${match.group(1)}'));
}

输出
How are you ? I am fine . 
How are you ? I am fine . 
I am fine .

查看Dart演示和正则表达式演示。

相关内容

  • 没有找到相关文章

最新更新