Regex 如何使用正则表达式根据文本元素的位置提取单词?
我正在寻找帮助,以便能够(使用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_
- 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个组:
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个组:
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。我遇到的问题是能否拉模型。谢谢你的回答。你能告诉我如何使用正则表达式来提取模型吗?谢谢你的回答。你能告诉我如何使用正则表达式来提取模型吗。