Regex 如何使用正则表达式根据文本元素的位置提取单词?

Regex 如何使用正则表达式根据文本元素的位置提取单词?,regex,Regex,我正在寻找帮助,以便能够(使用REGEX)从下面列出的文本元素中提取模型 2007本田CR-V LX清洁 2008本田雅阁EX ROOF MAGS CLEAN 1车主 2008本田思域EX-L CUIR TOIT皮革 2009丰田花冠S配备齐全 常数因子是, 模型总是第三个词 提前感谢您的帮助。我将使用正则表达式\d{4}获得第一个4位数字(年份),然后将其按空格分割(无论您使用哪种语言),然后从中获得第二个和第三个单词 您甚至可以将其拆分为空格并使用,例如在Ruby中: array=my_

我正在寻找帮助,以便能够(使用REGEX)从下面列出的文本元素中提取模型

  • 2007本田CR-V LX清洁
  • 2008本田雅阁EX ROOF MAGS CLEAN 1车主
  • 2008本田思域EX-L CUIR TOIT皮革
  • 2009丰田花冠S配备齐全
常数因子是,
模型总是第三个词


提前感谢您的帮助。

我将使用正则表达式
\d{4}
获得第一个4位数字(年份),然后将其按空格分割(无论您使用哪种语言),然后从中获得第二个和第三个单词

您甚至可以将其拆分为空格并使用,例如在Ruby中:

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

基本上,我不认为正则表达式是这里最好的解决方案。

我会匹配正则表达式
\d{4}
得到第一个4位数字(年份),然后用空格分割(使用任何一种语言),然后从中得到第二个和第三个单词

您甚至可以将其拆分为空格并使用,例如在Ruby中:

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

基本上,我不认为正则表达式是这里最好的解决方案。

如果你必须使用正则表达式,它是

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

\1是年份,2是品牌,3是型号,4是其他。但是,如果有任何模型有两个单词(例如,Crown Victoria),这将不起作用,除非您将这些单词与空格以外的单词分开(例如Crown_Victoria)。

如果您必须使用正则表达式,它是

^(\d{4}) +([^ ]+) +([^ ]+) +(.*)$
\1是年份,2是品牌,3是型号,4是其他。但是,如果有任何模型有两个单词(例如,Crown Victoria),则这将不起作用,除非您将这些单词与空格(例如Crown_Victoria)分开。请检查此链接:

您将获得3个组:

  • 2007年

  • 本田

  • 铬钒
  • 编辑

    如果您使用的是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"]);
    }
    
    string page=“2007本田CR-V LX清洁!!”;
    正则表达式reg=新正则表达式(@“(?[0-9]*)。\b(?[a-zA-z]*)。\b(?[a-zA-z-.]*)。\b(?.*);
    MatchCollection mc=reg.Matches(第页);
    foreach(在mc中匹配m)
    {
    MessageBox.Show(m.Groups[“model”]);
    }
    
    请检查此链接:

    您将获得3个组:

  • 2007年

  • 本田

  • 铬钒
  • 编辑

    如果您使用的是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"]);
    }
    
    string page=“2007本田CR-V LX清洁!!”;
    正则表达式reg=新正则表达式(@“(?[0-9]*)。\b(?[a-zA-z]*)。\b(?[a-zA-z-.]*)。\b(?.*);
    MatchCollection mc=reg.Matches(第页);
    foreach(在mc中匹配m)
    {
    MessageBox.Show(m.Groups[“model”]);
    }
    
    试试这个简单的方法:

    (\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)
    
    试试这个简单的方法:

    (\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)
    

    你为什么不把文本按空格分开呢?您想使用哪种语言?我正在使用visual web ripper并将文件保存为XML。我真的只能使用正则表达式将文本元素分成适当的字段。
    ^(\d{4})\s([^\s]+)\s([^\s]+)
    第一组是年份,第二组是make,第三组是model。你知道我怎样才能只提取模型吗?(每行第三个字)谢谢你的帮助,真的很感激你为什么不把这篇文章按空格分开?您想使用哪种语言?我正在使用visual web ripper并将文件保存为XML。我真的只能使用正则表达式将文本元素分成适当的字段。
    ^(\d{4})\s([^\s]+)\s([^\s]+)
    第一组是年份,第二组是make,第三组是model。你知道我怎样才能只提取模型吗?(每行的第三个字)谢谢你的帮助,我真的很感激。由于我使用的软件,我除了使用正则表达式外别无选择。谢谢你让Regex赢得了这一年。我也可以使用正则表达式来提取make。我面临的问题是能够拉模型。由于我使用的软件,我没有太多选择,只能使用正则表达式。谢谢你让Regex赢得了这一年。我也可以使用正则表达式来提取make。我遇到的问题是能否拉模型。谢谢你的回答。你能告诉我如何使用正则表达式来提取模型吗?谢谢你的回答。你能告诉我如何使用正则表达式来提取模型吗。