Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用正则表达式查找特定范围_Java_Regex - Fatal编程技术网

Java 使用正则表达式查找特定范围

Java 使用正则表达式查找特定范围,java,regex,Java,Regex,我试图使用正则表达式来找到1-31之间的范围。这是我到目前为止所做的,但它不起作用。还有谁能给我解释一下正则表达式的格式是如何工作的 1[0-3]?|2[0-9]|[1-9] 像这样分别考虑1-9、10-29和30-31案例 [1-9]|[12][0-9]|3[01] 像这样分别考虑1-9、10-29和30-31案例 [1-9]|[12][0-9]|3[01] 有些人在遇到问题时会想:“我知道,我会用 正则表达式。“现在它们有两个问题。 --杰米·扎温斯基 下面是详细版本,它还提供了两个其

我试图使用正则表达式来找到1-31之间的范围。这是我到目前为止所做的,但它不起作用。还有谁能给我解释一下正则表达式的格式是如何工作的

1[0-3]?|2[0-9]|[1-9]

像这样分别考虑1-9、10-29和30-31案例

[1-9]|[12][0-9]|3[01]

像这样分别考虑1-9、10-29和30-31案例

[1-9]|[12][0-9]|3[01]
有些人在遇到问题时会想:“我知道,我会用 正则表达式。“现在它们有两个问题。
--杰米·扎温斯基

下面是详细版本,它还提供了两个其他有用的函数:

... {
   static public int asInt(String s, int dflt) {
        try {
          return parseInt(s, 10);
        } catch (NumberFormatException nfe) {
          return dflt;
        }
   }

   static public boolean isInRange(int n, int mn, int mx) {
       return (n >= mn) && (n <= mx);
   }

   static public boolean isBetween1and31(String s) {
       return isInRange(asInt(s, 0), 1, 31);
   }
}
。。。{
静态公共int-asInt(字符串s,int-dflt){
试一试{
返回parseInt(s,10);
}捕获(NumberFormatException nfe){
返回dflt;
}
}
静态公共布尔值isInRange(int n、int mn、int mx){
返回(n>=mn)&(n)
有些人在遇到问题时会想:“我知道,我会用
正则表达式。“现在它们有两个问题。
--杰米·扎温斯基

下面是详细版本,它还提供了两个其他有用的函数:

... {
   static public int asInt(String s, int dflt) {
        try {
          return parseInt(s, 10);
        } catch (NumberFormatException nfe) {
          return dflt;
        }
   }

   static public boolean isInRange(int n, int mn, int mx) {
       return (n >= mn) && (n <= mx);
   }

   static public boolean isBetween1and31(String s) {
       return isInRange(asInt(s, 0), 1, 31);
   }
}
{
静态公共int-asInt(字符串s,int-dflt){
试一试{
返回parseInt(s,10);
}捕获(NumberFormatException nfe){
返回dflt;
}
}
静态公共布尔值isInRange(int n、int mn、int mx){
返回(n>=mn)&(n)

这将足以生成一个带范围的正则表达式



这就足以生成一个regex b/w a范围。

为什么不先转换为整数并检查其值?因为我必须对输入的字母进行防御性编码,而且我不知道如何使用try andcatch@user3421292try/catch比regex容易得多“查找范围”是什么意思?当你说“不工作”时,您做了什么,您期望发生什么,以及发生了什么?regexp要么(A)在与模式匹配的较大字符串中查找子字符串,要么(b)检查给定字符串是否与模式匹配。您想做什么?为什么不先转换为整数并检查其值?因为我必须对输入的字母进行防御性编码,而且我不知道如何使用try和catch@user3421292try/catch比regex容易得多“找到一个范围”是什么意思“不工作”,你做了什么,你期望发生什么,发生了什么?regexp要么(A)在与模式匹配的较大字符串中查找子字符串,要么(b)检查给定字符串是否与模式匹配。你想做什么?哦,好的,这很有意义,谢谢!01"是否在该范围内?@Malvolio否。我假设前导零是非法的。不。不要这样做。认真地说,如果您正在解析日期和时间,请使用
SimpleDataFormat
。如果您遇到问题,请发布另一个问题。您可以将多个正则表达式组合在一起以匹配不同的日期和时间组件范围,但是不能简单地匹配以检查整体组合是否有效…例如,2014年2月31日的2月31日可以匹配,但无效。认真地说,请学习使用DateFormat
。parse(String)
方法。哦,好的,这很有意义,谢谢!会是“01”吗是否在该范围内?@Malvolio否。我假设前导零是非法的。不。不要这样做。认真地说,如果您正在解析日期和时间,请使用
SimpleDataFormat
。如果您遇到问题,请发布另一个问题。您可以将多个正则表达式组合在一起以匹配不同的日期和时间组件范围,但是不能简单地匹配以检查整体组合是否有效…例如,2014年2月31日2月31日可以匹配,但无效。认真地说,学习使用DateFormat
.parse(字符串)虽然你的答案不符合我的口味,但我想请你在比较这两种方法时考虑以下事项:1。如果它不起作用,你会如何调试它?2。代码可以有什么其他用途?3。如果要求稍加改动。(例如,上限为32,从文件读取边界)4,不熟悉代码的人能容易地复习吗?5。执行多长时间?OK,你有我的赞成票,即使你的答案不符合我的口味。D.GusiTurbo非EST DISPTANUM,但是我会要求你在比较这两种方法时考虑以下事项:1。如果它不起作用,WO如何?你能调试它吗?2.代码还有什么其他用途?3.如果要求稍有改变(例如,上限为32,从文件读取边界),代码会如何变化?4.不熟悉代码的人能随时检查它吗?5.执行它需要多长时间?这与我43个月前发布的答案有什么不同?是的,它是一样的…但看看这两行的其余部分。这与我43个月前发布的答案有什么不同吗?是的,它是一样的…但看看其余部分两行中的一行