0

(REGEXを使用して)以下にリストされているテキスト要素からモデルをプルできるようにするためのヘルプを探しています。

  • 2007ホンダCR-VLXCLEAN !!
  • 2008ホンダアコードEXルーフマグクリーン1オーナー
  • 2008ホンダシビックEX-LCUIRTOIT LEATHER
  • 2009トヨタカローラS完全装備

定数係数は次のとおりです
。モデルは常に3番目の単語です

よろしくお願いします。

4

4 に答える 4

1

この単純なものを試してください:

(\d+)\s*(\w+)\s*(.+)

グループを取得します。

説明:

\d+        digits (0-9) 
           (1 or more times, matching the most amount possible)

\s*        whitespace (\n, \r, \t, \f, and " ") 
           (0 or  more times, matching the most amount possible)

\w+        word characters (a-z, A-Z, 0-9, _) 
           (1 or more times, matching the most amount possible)

.+         any character except \n 
           (1 or more times, matching the most amount possible)
于 2012-07-30T05:26:36.743 に答える
1

正規表現と照合して\d{4}最初の 4 桁の数字 (年) を取得し、それをスペースで分割して (使用している言語に関係なく)、そこから 2 番目と 3 番目の単語を取得します。

Ruby などでスペースを分割して使用することもできます。

array=my_name.split(" ")
year=array[0]
make=array[1]
model=array[2]

基本的に、正規表現がここでの最良の解決策になるとは思いません。

于 2012-07-30T05:00:14.410 に答える
1

正規表現を使用する必要がある場合は、

^(\d{4}) +([^ ]+) +([^ ]+) +(.*)$

\1 は製造年、\2 はメーカー、\3 はモデル、\4 はそれ以外です。ただし、単語をスペース以外で区切らない限り (Crown_Victoria など)、2 つの単語 (Crown Victoria など) を含むモデルがある場合、これは機能しません。

于 2012-07-30T05:18:47.480 に答える
0

このリンクを確認してください:正規表現の実装

([0-9]*).\b([a-zA-z]*).\b([a-zA-z-.]*).\b(.*)

3 つのグループを取得します。

  1. 2007年

  2. ホンダ

  3. CR-V

編集

C# 言語を使用している場合、これが取得する方法です。model

string page = "2007 Honda CR-V LX CLEAN !!";
Regex reg = new Regex(@"(?<year>[0-9]*).\b(?<make>[a-zA-z]*).\b(?<model>[a-zA-z-.]*).\b(?<rest>.*)");
MatchCollection mc = reg.Matches(page);

foreach (Match m in mc)
{
    MessageBox.Show(m.Groups["model"]);
}
于 2012-07-30T05:20:05.763 に答える