在我的正则表达式表达式之前,我想添加“!”。 我有:
TASK PERS asdf
PERS asdf
我想使用正则表达式并获取
! TASK PERS asdf
! PERS asdf
而且我不知道如何写正则表达式:(我已经尝试了很多次,但是我失败了,请您能帮我吗?
java
newContent = content.replaceAll("[A-Z]*TASK PERS", "!TASK PERS")
但这不起作用。
答案 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)(.*)
! $1$2
jex.im可视化正则表达式:
答案 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