2017-05-15 101 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