gpt4 book ai didi

java - 正则表达式中的字边界

转载 作者:行者123 更新时间:2023-12-01 13:06:23 27 4
gpt4 key购买 nike

我使用以下正则表达式:

if (input.matches("^[\\d\\s()\bAND\b\bOR\b.]+$")) {

// do something

}

我的目标是仅验证数字(整数和小数)、空格、( )、点、AND、OR。其他一切都是不允许的。看起来好像有效,但我遇到了单词边界\bAND\b 和\bOR\b 的问题例如。我不能不输入 ANDWE 或 EEE 或任何组合,但我可以输入 AN 或 A。如何在字符串中只允许两个单词 AND 或 OR?它们在字符串中是可选的。

输入示例

0.10 和 23 - 有效

12 AND (15 OR 0.2) - 有效

12 或 190 - 有效

12 AND AND 12 - 有效

12 A 233 - 荣军

最佳答案

您需要数字、空格、括号、点、AND 和 OR。

这是一种方法,通过指定字符类中的单个字符,并使用 OR 运算符 | 分隔两个单词。请注意,\b\ 进行了转义,因为 \b 本身就是一个字符串转义序列。

if (input.matches("^([\\d\\s().]|\\bAND\\b|\\bOR\\b)+$")) {

// do something

}

这是一个针对您的输入的测试程序。

import java.util.regex.*;


public class Main{
public static void main(String[] args) {
String[] myArray = new String[] {"0.10 AND 23","12 AND (15 OR 0.2)","12 OR 190","12 AND AND 12","12 A 233"};
String regex = "^([\\d\\s().]|\\bAND\\b|\\bOR\\b)+$";

for (int i = 0; i < myArray.length; i++)
System.out.println(myArray[i].matches(regex));

}
}

输出:

true
true
true
true
false

关于java - 正则表达式中的字边界,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23230678/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com