2017-05-15 69 views
3

我试图做的正则表达式将匹配到这一点:正则表达式生成器

Name[0]/Something 

Name/Something 

动词名称和东西将永远知道。 我做了Name[0]/Something,但我想弥补这方面动词模式在一个正则表达式 我试图sign [0]作为可选的,但它没有工作:

var regexPattern = "Name" + @"\([\d*\]?)/" + "Something" 

你知道一些发电机,我会输入一些动词,它会为我形成模式?

回答

1

你接近,正则表达式Name(\[\d+\])?\/Something会做。

+0

您的正则表达式将匹配'Name [0/Something'以及 – degant

+0

@degant,谢谢,忽略了这一点。 –

0

我认为这是你在找什么:

Name(\[\d+\])?\/Something 

名称 litteral

([\ d +])?支架可选之间的数字(1个或多个数字)1或0次

/东西东西litteral

https://regex101.com/r/G8tIHC/1

+0

那么括号内多一个数字怎么样? –

+0

@AndriiLitvinov你在'd'后面加了一个'+',表示这个字符(数字)为'1或更多' –

+0

是的,我想字符串表示索引访问,它可以是一个数字。 –

0

var string = 'Name[0]/Something'; 
 

 
var regex = /^(Name)(\[\d*\])?\/Something$/; 
 

 
console.log(regex.test(string)); 
 

 
string = 'Name/Something'; 
 

 
console.log(regex.test(string));

你已经试过错这个模式:\([\d*\]?)/

  • 无需(前使用\(在这种情况下)

  • ?]后意思是:chara CTER ]零次或一次

所以,如果你想要的图案[...]显示零次或一次,你可以尝试:(\[\d*\])?

希望这有助于!

+0

如果括号内没有数字,结果是否正确? –

+0

@AndriiLitvinov也许是错误的,但这个问题没有提到。 – Vayne

1

问题出现在'(')之前的模式中。
这里是你需要的东西:

var str = "Name[0]/Something or Name/Something"; 
Regex rg = new Regex(@"Name(\[\d+\])?/Something"); 
var matches = rg.Matches(str); 
foreach(Match a in matches) 
{ 
    Console.WriteLine(a.Value); 
} 
4

使用此:

Name(\[\d+\])?\/Something 
  • \d+允许一个或多个数字
  • \[\d+\]允许内部[]一个或多个数字。因此,这将允许[0][12]等,但拒绝[]
  • (\[\d+\])?允许与括号数字为存在任一零次或一次
  • \/表示斜线(只有一个)
  • NameSomething是字符串文字

Regex 101 Demo