情况:
我有一个静态字典和一个动态确定的正则表达式。
正则表达式在这里的应用程序中受到限制,因为我永远不会使用代表可变数量字符的符号。
我需要创建一个正则表达式,查找字典中与此类模式匹配的所有单词:(any letter in set: q,w,e,r,t,y,u,i or blank) & (any letter in set: q,w,e,r,t,y,u,i or blank) & (a or blank) & (s or blank) & (and letter in set: q,w or blank) & (d or blank) & (any letter in set: q,w,e or blank)
[q,e,r,t,y,u,i,null][q,e,r,t,y,u,i,null][a,null][s,null][q,w,null][d,null][q,w,e,null]
例如,“rasw”一词有效(假设它在我的字典中)。
问题:
我还需要一条信息,我需要知道这个词是从第二个位置开始的。与在第一个位置开始的有效单词“qra”或从第4个位置开始的有效单词“sqde”相对应。
其他信息:
我打算使用正则表达式.dll在MS SQL SERVER中执行此操作 http://www.codeproject.com/KB/string/SqlRegEx.aspx
另请注意,鉴于上述示例,我不希望“qqqq”成为有效单词,即使它在字典中也是如此。这个词不允许跳过一个空格,但是如果这个场景可以做的话,它就不允许在第一个空格上开始......
谢谢!
答案 0 :(得分:0)
我非常强烈建议在这里使用CLR。然后在.NET中做你的正则表达式的东西。如果你找到了这个词,你需要做的就是在空格上做.Split(" ")
,然后在数组中进行迭代,找出它所在的第n个位置。
例如:var myString = "The fat fox is lazy";
(假设你匹配单词“是”) - 所以你知道那里有“是”,现在要找出你能找到的位置:
var _counter = 0;
foreach(var s as string in myString.Split(" "))
{
if(s == "is") { return _counter; }
_counter += 1;
}
希望你能理解我在这里建议的内容。