0

次のような文字列の例で機能する正規表現を以下に示します。

  • MCCOY 3H L24 FINAL 02-28-2012.dwgまた
  • SMITH-JOHNSON 5H R32 FINAL 05-26-2012.dwg

しかし今、正規表現を変更して上記の例で機能するようにする方法を見つけようとしています。

  • MCCOY 3H L-ABC FINAL 02-28-2012.dwgまた
  • SMITH-JOHNSON 5H R-123 FINAL 05-26-2012.dwg

彼らはまた、のようにすることができます

  • MCCOY 3H L-C2 FINAL 02-28-2012.dwgまた
  • SMITH-JOHNSON 5H R-2 FINAL 05-26-2012.dwg

要約すると、中央のセクションには常にアルファベット文字の後にダッシュが続き、最大3 つの数字またはアルファベット文字、またはわずか 1つの数字またはアルファベット文字が含まれる可能性があります。

"^[a-z]+(?:[ -][a-z]+)*\s+\d+[a-z]\s+[a-z]\d+\s+[a-z]+\s+\d{2}-\d{2}-\d{4}\.dwg$"
4

3 に答える 3

3
\w{1,3}

1〜3文字の英数字に一致します。

http://msdn.microsoft.com/en-us/library/az24scfc.aspx#quantifiers

于 2012-09-07T13:02:12.060 に答える
2

大文字と一致しない(?i)ため、これを機能させるには a を追加する必要がありました-少なくとも私が通常使用する正規表現エンジンでは:)だから私はこれにたどり着きました:[a-z]

(?i)^[a-z]+(?:[ -][a-z]+)*\s+\d+[a-z]\s+[a-z]-\w{1,3}\s+[a-z]+\s+\d{2}-\d{2}-\d{4}\.dwg

Regexr で自分で試してみてください

編集: @Odedが私に気づいたように、質問の星は入力文字列の一部ではありません-削除され、更新されたRegexrリンク。

于 2012-09-07T13:07:36.360 に答える
1

これは、すべてのフィールドを個別に返す正規表現です。

^(?<Customer>.*?)\s+?(?<Id1>[\-a-z0-9]*?)\s+?(?<Id2>[\-a-z0-9]*?)\s+?FINAL\s+?(?<Date>[\-0-9]{10})\.dwg$

フィールドの説明:

  • 顧客: MCCOYSMITH-JOHNSONJAKE MCCOY
  • Id1 : 5H3H
  • Id2 : L24, R32, L-ABC, R-123,L-C2
  • 日付: 02-28-2012,05-26-2012

テスト済み:

MCCOY         3H L24   FINAL 02-28-2012.dwg
SMITH-JOHNSON 5H R32   FINAL 05-26-2012.dwg
JAKE MCCOY    3H L-ABC FINAL 02-28-2012.dwg
SMITH-JOHNSON 5H R-123 FINAL 05-26-2012.dwg
MCCOY         3H L-C2  FINAL 02-28-2012.dwg
SMITH-JOHNSON 5H R-2   FINAL 05-26-2012.dwg
于 2012-09-07T13:19:44.473 に答える