2

次のようにフォーマットされたテキストブロックがあります。

1.2.3.4.5または1.2222.3.4.5または1または1.2 など

不明な数とドット(法的文書のセクション)

セクション全体(1.2.3.4.5)をグループにまとめるにはどうすればよいですか?

私はC#を使用していますが、正規表現は問題ありません。翻訳できます。

4

3 に答える 3

4

更新しました

これを使用してください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.
于 2012-07-16T18:22:36.333 に答える
4
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();
于 2012-07-16T18:29:35.297 に答える
1

ええと、あなたが5を超えることができないことを知っているなら、あなたはすることができます

@"1+((.2+)((.3+)((.4+)(.5+)?)?)?)?"

有限数のシンボルまで、すべてのシンボルについてそのパターンを拡張できます

+、シンボルの任意の数の出現を意味しますが、少なくとも1つです。0が有効な場合は、*代わりに使用できます。

例のようにパターンをキャプチャしたくない?:場合は、冒頭の括弧の後に置き ます。正規表現を読みやすくするために、括弧を省略しました。(?:abc)

?括弧の後は、前の記号の1または0を意味します。

たとえば、弦がどこまで行けるかわからない場合は、

"1.2.3.4......252525.262626.272727.......n.n.n"私の直感よりも、正規表現ではそれができないと言われています。

于 2012-07-16T18:14:21.800 に答える