Java 如何使用正则表达式从字符串中提取和替换特定模式?
我知道这个问题已经在堆栈溢出问题上被问过很多次了,但是regex太难理解了 我尝试的是:Java 如何使用正则表达式从字符串中提取和替换特定模式?,java,regex,Java,Regex,我知道这个问题已经在堆栈溢出问题上被问过很多次了,但是regex太难理解了 我尝试的是: String sentence = "The #{adjective} brown fox jumps over the lazy dog"; String requierd_sentence = sentence.replaceAll("[{*.*}]", "quick"); System.out.println(requierd_sentence); 在
String sentence = "The #{adjective} brown fox jumps over the lazy dog";
String requierd_sentence = sentence.replaceAll("[{*.*}]", "quick");
System.out.println(requierd_sentence);
在这个句子中,形容词不是固定位置的——它们随着每一个新的字符串/句子而变化。我需要做的是,将形容词替换为所需字符串,该字符串位于句子列之外的另一列中。所以从列中提取字符串是可以的,但是正则表达式匹配在很多尝试中都失败了
对于{any string}
,什么是正确的正则表达式?
敏捷的棕色狐狸跳过了懒狗。
所有的{形容词}都不是金子
应该输出所有闪光的都不是金子。
{形容词}
,所以我不能使用split
。我必须使用正则表达式模式。您可以使用此模式(请参阅):
这是如何工作的?
与文本字符\\{
*{
负字符类匹配任何不是右大括号的字符[^}]*
与右大括号匹配}
- 我们将所有这些替换为“快速”
[
和{
:句子。replaceAll(“\\[\{*.*}]”,“,quick”)
。太棒了!它成功了,但解释不好。然而,3为你的精神干杯,你关心的不仅仅是给出答案,还要给出解释,这样人们才能学习。你能用更好的方式解释吗。@paul完全重写了解释。这对你有用吗?让我知道。:)谢谢,明白了。投票给演示,这是一个极好的例子要学习的东西regex
。
String replaced = your_original_string.replaceAll("#\\{[^}]*}", "quick");