は、私は次の正規表現を持っている
"1、2、3、" 私は次の文字列に一致するように変更する必要があり
1つの特定の単語(大文字と小文字を区別しない):
「1、myword、3」
"myword、2、3"
"1、myword、3、mywordは"
にはどうすれば追加のチェックグループを追加することができますか?
更新:Mywordはオプションで、数回繰り返したり、文字列の先頭に置くことができます。
は、私は次の正規表現を持っている
"1、2、3、" 私は次の文字列に一致するように変更する必要があり
1つの特定の単語(大文字と小文字を区別しない):
「1、myword、3」
"myword、2、3"
"1、myword、3、mywordは"
にはどうすれば追加のチェックグループを追加することができますか?
更新:Mywordはオプションで、数回繰り返したり、文字列の先頭に置くことができます。
\d+
の両方を(?:\d+|myword)
に置き換えることができます。あなたはリテラルテキストcat
かdog
を検索したい場合は
、垂直バーまたはパイプ記号で両方のオプションを区切る:Alternation with The Vertical Bar or Pipe Symbolを見て
cat|dog
。さらに多くのオプションが必要な場合は、リストを展開するだけです:cat|dog|mouse|fish
。
我々は唯一\d+
数字とmyword
を交互にしたい正規表現エンジンを伝えるために、我々はここでしか目的をグループ化するために使用さnon-capturing groupの内側に、それらを囲みます。
^\s*((?:\d+|myword)(\s*,\s*(?:\d+|myword))*)?\s*$
を参照してくださいregex demoを参照してください。
、鈍感MyWoRd
ケースと一致Regex
オブジェクトをコンパイルするときにRegexOptions.IgnoreCase
フラグを使用、または(?i)
インライン改質(すなわち(?i)^\s*((?:\d+|myword)(\s*,\s*(?:\d+|myword))*)?\s*$
)と全体のパターンを付加します。ここで
C# demoです:
using System;
using System.Collections.Generic;
using System.Text.RegularExpressions;
public class Test
{
public static void Main()
{
var inputs = new string[] { "1, 2, 3", "1, myword, 3", "1, MyWord, 3" };
var pat = @"^\s*((?:\d+|myword)(\s*,\s*(?:\d+|myword))*)?\s*$";
foreach (var s in inputs)
Console.WriteLine("{0} matched: {1}", s, Regex.IsMatch(s, pat, RegexOptions.IgnoreCase));
}
}
とmywordの小文字を区別しないようにするには? Mywordを使用するには? – user3132547
'RegexOptions.IgnoreCase'フラグを使うか、パターン全体に'(?i) 'を付加してください。 –
開始するには、元の正規表現をに変更できる^\s*(\d+\s*,\s*)*\d+$
に縮小することができます。
mywordが立ち上がっていたらどうなりますか? mywordがオプションの場合は? – user3132547
'(a | b)'は、正規表現中の 'a'または' b'をテキストの同じ位置にマッチさせることを意味します。したがって、この場合、 'myword'は完全にオプションで、開始時または終了時、またはその間に表示されます。 –
'と' \ dの+ 'の両方を交換してください(?:\ D + | myword)'。 [?^ \ s *(?:\ d + | myword)(\ s *、\ s *(?:\ d + | myword))*)?\ s * $ '](http://regexstorm.net/tester?p =%5e%5cs *(%3f%3a%5cd%2b%7cmyword)(%5cs *%2c%5cs *%3f%3a%5cd%2b%7cmyword))*)%3f% 5cs *%24&i = 1%2c + 2%2c + 3%0d%0a1%2c + myword%2c + 3%0d%0amyword%2c + 2%2c + 3%0d%0a1%2c + myword%2c + 3 %2c + myword%0d%0a&o = m)。 –
@WiktorStribiżew素晴らしい!どうもありがとう! – user3132547
https://msdn.microsoft.com/en-us/library/az24scfc(v=vs.110).aspxとcountオプションを見てください。 0、あなたのカウントかもしれないのでオプションです。すべての問題が正規表現ではありません。ちょっとしたコードを書いておくと、後に来て、それを維持しなければならないschmuckの意図をより明確にするかもしれません。 –