我正在为网站的产品目录进行一些搜索,并且使用正则表达式来确定搜索文本框中的文本中是否包含诸如“精确搜索短语”之类的字符串。我当前使用的正则表达式是:
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"
引号之类的内容,在这种情况下,如果要转义最后一个引号,则是不正确的。
我想用某种方式来判断一组引号内的字符串前面是否有空格或空字符串(如果唯一的搜索文本是用引号引起的短语),但是我对正则表达式没有经验,也很挣扎。感觉这是解决此类问题的最佳选择。任何帮助/指针?
试试这个:(更新)
首先使用此表达式查找(用javascript)模式“ 9”“ 9.9”“ 9-9”的所有字符串并将其替换为模式“ 9'” 9.9“” 9-9“
\"[0-9.-]*\"
接下来全部替换
([^a-z,0-9,',"])([\s]*)\"
仅带有一个“。”将删除所有不需要的空格。
然后采用这个新的格式化字符串并应用
\"[^\s]([^\"]*)[^\s]\"
这将照顾所有情况。只需确保将原始字符串带入一个新变量中,然后再进行其他操作,最终将修改原始值。
这是我用来测试上述表达式的示例字符串。我没有时间编写javascript函数本身。如果使用上面的表达式使它起作用,请发布该函数。
8“”博世磨床“,”博世“ 8”磨床“和”博世磨床“ 8”“ 99”“ 9.9”“ 9-7”
我用来测试我的正则表达式的网站是http://www.regexr.com/
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句