Java - 匹配特定文本的正则表达式

标签 java regex

我的费率列中有多个值

值如下:

20
10
invalidtext
<blank>
NA
n/a
#NA

我尝试过使用以下模式

"^0-9"   // If input value is not a numeric value (0-9) then replace it with null

但这会将列中的所有文本值(如果有)替换为 null, 我想使用正则表达式仅将值为 na、n/a、#na(值可以是大写或小)的值替换为 null,并保持值“invalidtext”不变。

关于如何设置这样一个特定的单一模式检查有什么帮助吗?因为我不想使用多个替换语句。

最佳答案

假设文本是多行文本,您可以使用

s = s.replaceAll("(?mi)^(?!invalidtext$)[^\\d\r\n]*n/?a[^\\d\r\n]*$", "");

请参阅regex demo

详细信息

  • (?mi) - MULTILINE 和 IGNORECASE 标志打开
  • ^ - 行的开头
  • (?!invalidtext$) - 该行不能等于 invalidtext
  • [^\d\r\n]* - 0+ 个除数字、CR 和 LF 之外的字符
  • n/?a - n/ana
  • [^\d\r\n]* - 0+ 个除数字、CR 和 LF 之外的字符
  • $ - 行尾。

关于Java - 匹配特定文本的正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58306130/

相关文章:

python - 使用正则表达式将python中的大写重复字母替换为单个小写字母

java - 在java中使用反射时如何检查方法参数的类型

java - 我怎样才能从一个大文件中读取并以快速的方式将它插入到数据库中

Java Annotations - 寻找 RetentionPolicy.CLASS 的示例

java - JSF 和 ManagedBean : NullPointerException

Javascript 正则表达式 - 为什么它不能在 IE 上按预期工作?

php - 如何使用 PHP 和正则表达式检查输入值是否正确?

regex - 在记事本中使用正则表达式删除标签之间的文本

java - 从文件中读取模式与字符串文字

java - Maven Ant 任务 - 依赖关系