2017-05-15 5 views
3

Ich versuche RegexMuster zu tun, die zu diesem Spiel werden:RegexMuster Generator

Name[0]/Something 

oder

Name/Something 

Verb Namen und Etwas wird immer bekannt sein. Ich habe für Name[0]/Something, aber ich will Muster für dieses Verb in einem regex machen ich sign [0] habe versucht, als optional, aber es hat nicht funktioniert:

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

Kennen Sie einigen Generator, wo ich einige Eingabe Verben und es wird Muster für mich machen?

Antwort

1

Sie waren in der Nähe, die Regex Name(\[\d+\])?\/Something tun wird.

+0

Ihre Regex wird mit 'Name [0/Something's auch übereinstimmen – degant

+0

@degant, danke, das übersehen. –

0

Ich denke, das ist das, was Sie suchen:

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

Namen Litteral

([\ d +])? eine Zahl (1 oder mehr Stellen) zwischen Klammern optional 1 oder 0 mal

/Etwas Etwas Litteral

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

+0

Wie wäre es mit mehr als einer Ziffer in Klammern? –

+0

@AndriiLitvinov, dass Sie ein '+' rechts nach dem "d" hinzufügen, bedeutet "1 oder mehr" dieses Zeichens (Nummer) –

+0

Ja, genau, denke ich String Indexzugriff, der mehr als eine Ziffer sein kann. –

0

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

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

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

 
string = 'Name/Something'; 
 

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

Sie haben mit diesem Muster falsch versucht: \([\d*\]?)/

  • Keine Notwendigkeit \ vor ( (in diesem Fall) zu verwenden

  • ? nach ] gemein: Chara cter ] Null oder eine Zeit

Also, wenn Sie das Muster [...] zeigt Null oder ein Mal möchten, können Sie versuchen: (\[\d*\])?

hoffe, das hilft!

+0

Ist das Ergebnis korrekt, wenn keine Ziffern in Klammern stehen? –

+0

@AndriiLitvinov Vielleicht falsch, aber die Frage erwähnt nicht darüber. – Vayne

1

Das Problem ist mit dem ersten '\' in Ihrem Muster vor '('.
Hier ist, was Sie brauchen:

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

verwenden:

Name(\[\d+\])?\/Something 
  • \d+ eine oder mehr Ziffern erlaubt
  • \[\d+\] ermöglicht eine oder mehr Ziffern innerhalb [ und ]. So wird es [0], [12] usw. erlauben aber ablehnen []
  • (\[\d+\])? Stelle mit Klammern können vorhanden sein entweder null mal oder einmal
  • \/ zeigt einen Schrägstrich (nur eine)
  • Name und Something sind Stringliterale

Regex 101 Demo