正则表达式处理引用的字符串和双引号为英寸

时间:2014-07-11 14:17:14

标签: c# regex string regex-lookarounds

我正在写一个网站的产品目录,我正在使用正则表达式来确定是否有任何字符串,例如"确切的搜索短语"包含在搜索文本框的文本中。我目前正在使用的正则表达式是:

List<string> searchTermList = searchTerm.Trim().ToLower().Split(new Char[] { ' ' }).ToList();

foreach (Match match in Regex.Matches(searchTerm, "\"([^\"]*)\""))
{
//irrelevant code
}

此代码对我很有用,直到我搜索类似的内容:
8" tortilla "stone ground"

我希望作为比赛的结果是
"stone ground"

但我得到了 " tortilla "

我发现类似问题的其他帖子是逃避英寸的双引号,但我没有办法可靠地逃避这些例子的引号。我发现的其他文章的最佳选择是如果它跟随一个数字就逃脱它,但是用户可以在引号中搜索"burger 3-1"之类的东西,在这种情况下逃避最后一个引用是不正确的。

我想要的是一些方法来判断一组引号中的字符串是否以空格或空字符串开头(如果唯一的搜索文本是引号中的短语),但我没有经验并且正在使用正则表达式,我觉得这是解决这类问题的最佳选择。任何帮助/指针?

1 个答案:

答案 0 :(得分:0)

试试这个:(更新)

首先使用此表达式查找并替换(在javascript中)所有模式的字符串&#34; 9&#34; &#34; 9.9&#34; &#34; 9-9&#34;对模式&#34; 9&#39; &#34; 9.9&#39; &#34; 9-9&#39;

\"[0-9.-]*\"

接下来全部替换

([^a-z,0-9,',"])([\s]*)\" 

只有一个&#34;。这将删除所有不需要的空格。

然后使用这个新的格式化字符串并应用

 \"[^\s]([^\"]*)[^\s]\"

这将照顾所有场景。只需确保将原始字符串转换为新变量并使用else进行操作,最终将修改原始值。

以下是我用来测试上述表达式的示例字符串。我没有时间编写javascript函数本身。如果您使用上述表达式将其发挥作用,请发布该函数。

8&#34; &#34; bosch grinder&#34; ,bosch&#34; 8&#34;粉碎机&#34;和&#34; bosch grinder&#34; 8&#34; &#34; 99&#34; &#34; 9.9&#34; &#34; 9-7&#34;

我用来测试我的正则表达式的网站是http://www.regexr.com/