匹配可能重复n次

时间:2015-09-03 04:44:05

标签: java regex

要求: 字符串的格式应为:
import SOME_NAME = require(“RELATIVE_PATH”)
其中RELATIVE_PATH应该以./或../开头,并且应该是双引号

有效字符串的示例:

  

测试字符串1:

     

import test = require(“../../ file3”)
  应该有匹配

     

测试字符串2:

     

import test = require(“./ file3”)
  应该有匹配

无效字符串的示例:

  

测试字符串3:

     

import test = require(“file3”)
  这是无效的,因为相对路径不是以./或../

开头      

测试字符串4:

     

import test = require('。/ file3')
  这是无效的,因为相对路径应该是双引号“”

我用来测试字符串匹配上述模式的REGEX是

final String REGEX = "import\\s\\w+\\s?=\\s?require\\(\\\"(./|../)[A-Za-z0-9]*\"\\)"
boolean isAMatch = testString.matches(REGEX);

正则表达式无法匹配testString1,因为正则表达式模式不处理相对路径中具有重复模式的字符串,如../../或././。

我尝试像这样修改REGEX(./+|../+)

final String REGEX = "import\\s\\w+\\s?=\\s?require\\(\\\"(./+|../+)[A-Za-z0-9]*\"\\)"    

但这不起作用。我在这里缺少什么?

1 个答案:

答案 0 :(得分:-1)

^import\\s+\\w+\\s*=\\s*require\\("(?:\\.\\.?\\/)+[a-zA-Z0-9]+"\\)$

你可以使用它。参见演示。

https://regex101.com/r/cT0hV4/3