4

最も代表的な形式のこの再開されたアニメーション データ リストがあります。

    * » iddle 1-210
    * » run01 215-252
    * » stand up 876-987
0   -      = bindpose
1   - 48   = idle
118 - 150  = attack_idle
151 - 192  = attack 1
791 - 815  = strafe right
000 - 009 T-pose
010 - 040 walk
045 - 075 walk-back
080 - 110 walk-right-45
490 - 590 idle-1
1060 - 1120 spell-cast_01
1515 - 1590 sack_pick_up

アニメーションの名前を一致させる方法を考えています...

このマッチパターンを作りました。

 ([a-zA-Z][\w- _]+)

戻る

1: iddle 1-210
1: run01 215-252
1: stand up 876-987
1: bindpose
1: idle
1: attack_idle
1: attack 1
1: strafe right
1: T-pose
1: walk
1: walk-back
1: walk-right-45
1: idle-1
1: spell-cast_01
1: sack_pick_up

3 つの開始試合に数字が含まれないようにするために、次のことを試しました。

 ([a-zA-Z][\w- _]+)(?:\s\d+\s*[-]*\s*\d\s*)

しかし、それは最後の行と一致しません:

1: iddle
1: run01
1: stand up
1: bindpose
1: idle
1: attack_idle
1: attack 1
1: strafe right
1: T-pose
1: walk
1: walk-back
1: walk-right-45
1: idle-1
1: spell-cast_01

なんで?

(?= \sに関連していると思いますが、修正方法が見つかりません...

編集:「|」を修正しました 括弧の間

4

3 に答える 3

1

正規表現パターンを使用

[a-zA-Z][\w-]*(\s+(?:[a-zA-Z]|\d(?!\d*-))[\w-]*)*
于 2012-10-27T16:12:40.573 に答える
1

\s他のすべての行は、改行をと一致1させ、次の行をと一致させることができると思いますが\d+、これは最後の行では不可能です。別のオプションを次に示します。

複数行オプションを使用すると (C# では match 関数にパラメーター を指定できますRegexOptions.Multiline)、$は行末に一致します。次に、次のようなことができます。

([a-zA-Z][\w -]+)(?:\s\d+\s*-*\s*\d+)?$

これにより、最後の数字部分はオプションになりますが、その後に行末が必要であると主張します。

_すでに の一部であるため、文字クラスから削除したことに注意してください\w。も同じなので に変更[-]し ます。-

于 2012-10-27T16:13:27.143 に答える
0

この正規表現を使用して、名前のみを取得しますgroup1

^.*?([a-zA-Z][\w -]+?)(?:(?:\s*\d+-\d+)?)$

使用multilineモード


正規表現のエラー

が含まれているため、_in[\w- _]は必要ありません\w_

とスペースの間の範囲を指定しているため、\w-in[\w- _]は間違っています。\w

文字クラスの最初または最後に使用された場合、[\w -]特別な意味はありません。-

于 2012-10-27T16:31:21.800 に答える