次のようにフォーマットされたテキストブロックがあります。
1.2.3.4.5
または1.2222.3.4.5
または1
または1.2
など
不明な数とドット(法的文書のセクション)
セクション全体(1.2.3.4.5)をグループにまとめるにはどうすればよいですか?
私はC#を使用していますが、正規表現は問題ありません。翻訳できます。
更新しました
これを使用してくださいRegex
:
Regex.Matches(inputString, @"\d[\.\d]*(?<!\.)");
説明:
\d digits (0-9)
[.\d]* any character of: '.', digits (0-9)
(0 or more times, matching the most amount possible))
(?<! subexpression) Zero-width negative lookbehind assertion.
string s = "1.2.3.4.5 or 1.2222.3.4.5 or 1 or 1.2 or 2222.3333.111.5 etc";
var matches = Regex.Matches(s, @"\d+(\.\d+)*").Cast<Match>()
.Select(m => m.Value)
.ToArray();
ええと、あなたが5を超えることができないことを知っているなら、あなたはすることができます
@"1+((.2+)((.3+)((.4+)(.5+)?)?)?)?"
有限数のシンボルまで、すべてのシンボルについてそのパターンを拡張できます
は+
、シンボルの任意の数の出現を意味しますが、少なくとも1つです。0が有効な場合は、*
代わりに使用できます。
例のようにパターンをキャプチャしたくない?:
場合は、冒頭の括弧の後に置き
ます。正規表現を読みやすくするために、括弧を省略しました。(?:abc)
?括弧の後は、前の記号の1または0を意味します。
たとえば、弦がどこまで行けるかわからない場合は、
"1.2.3.4......252525.262626.272727.......n.n.n"
私の直感よりも、正規表現ではそれができないと言われています。