正则表达式之前的字母

时间:2019-06-10 15:29:34

标签: java regex

在我的正则表达式表达式之前,我想添加“!”。 我有:

TASK PERS asdf

PERS asdf

我想使用正则表达式并获取

! TASK PERS asdf

! PERS asdf

而且我不知道如何写正则表达式:(我已经尝试了很多次,但是我失败了,请您能帮我吗?

java

newContent = content.replaceAll("[A-Z]*TASK PERS", "!TASK PERS")

但这不起作用。

3 个答案:

答案 0 :(得分:1)

对于此任务,非正则表达式方法会更好,但如果我们希望使用表达式,则可能会起作用:

  btn.setOnClickListener(new View.OnClickListener() {
        @Override

        public void onClick(View view) {

              if(!mRewardedVideoAd.isLoaded()){
                  progressBar.setVisibility(View.VISIBLE);
                  Toast.makeText(this, "Ad is not loaded", Toast.LENGTH_SHORT).show();
                  mRewardedVideoAd.loadAd("ca-app-pub-3940256099942544/5224354917", new AdRequest.Builder().build());
              }

        }
    });

@Override
public void onRewardedVideoAdLoaded() {
        progressBar.setVisibility(View.INVISIBLE);
        mRewardedVideoAd.show();
        Toast.makeText(this, "onRewardedVideoAdLoaded", Toast.LENGTH_SHORT).show();

}

并将其替换为(TASK PERS|PERS)(.*)

Demo

测试

! $1$2

RegEx电路

jex.im可视化正则表达式:

enter image description here

答案 1 :(得分:1)

一种可能的解决方案是匹配行^(带有MULTILINE标志(?m)的开头,然后检查其后是否有PERS或{{1 }}。我们可以使用positive look-ahead TASK PERS来做到这一点,它不会将与之匹配的文本放入整个正则表达式的匹配中,因此不会修改(?=...)PERS

因此您的代码如下所示:

TASK PERS

答案 2 :(得分:1)

您可以将匹配项带有可选部分(?:TASK )?的匹配项用于空格,然后替换为!和匹配项。如果您还想在替换中添加空格,请添加一个空格。

正如Pshemo在其评论中指出的那样,您应该使用Multiline标志。或在模式的开头使用(?m)作为修饰符。

newContent = content.replaceAll("^(?:TASK )?PERS\b", "!$0");

^(?:TASK )?PERS\b

Regex demo