如何使用正则表达式从字符串中提取和替换特定模式?

时间:2014-06-17 05:20:41

标签: java regex

我知道Stack Overflow上已多次询问过这个问题,但正则表达式难以理解。

我尝试了什么:

String sentence = "The #{adjective} brown fox jumps over the lazy dog";
            String requierd_sentence = sentence.replaceAll("[{*.*}]", "quick");
            System.out.println(requierd_sentence);

在这句话中,形容词不在固定的位置 - 它们随着每个新的字符串/句子而改变。我需要做的是,用句子列之外的另一列中可用的字符串替换形容词。因此从列中获取字符串是可以的,但是正则表达式匹配在许多尝试中失败。

#{any string}的正确的正则表达式是什么?

  1. 上述字符串的示例输出为= The quick brown fox jumps over the lazy dog.
  2. 另一个示例输入All that #{adjective} is not gold应输出All that glitters is not gold.
  3. 现在上面的两个句子在句子的不同位置都有#{adjective},所以我不能使用split。我必须使用正则表达式。

1 个答案:

答案 0 :(得分:2)

您可以使用此功能(请参阅demo):

String replaced = your_original_string.replaceAll("#\\{[^}]*}", "quick");

这是如何运作的?

  • #\\{与文字字符*{
  • 相匹配
  • [^}]*否定字符类匹配任何不是右括号的字符
  • }匹配右括号
  • 我们用" quick"
  • 替换所有这些