日期:2014-05-18  浏览次数:21031 次

谁熟悉php的正则,请帮转成C#的


keywords = '超G强抗t△干dst△扰敏■■感※◇词 kljb过&滤jb一■&№正■№则匹◎←配代crSBtr码(只……支{持^中#^文)';

$blackwords = '超强|抗干扰|敏感词|过滤|正则匹配|代码|只支持|中文';


 

if(preg_match("/$blackwords/", preg_replace('/[^\x{4e00}-\x{9fa5}]/u', '', $keywords), $match)) ///转这一句///

{

  /* 检测到有敏感词 执行相关代码 */

  var_dump($match);

}




------解决方案--------------------
再改一下我的代码,可以找到原始字符和位置
VB.NET code

        Dim keywords = "超G强抗t△干dst△扰敏■■感※◇词 kljb过&滤jb一■&№正■№则匹◎←配代crSBtr码(只……支{持^中#^文)"
        Dim blackwords = "(超强|抗干扰|敏感词|过滤|正则匹配|代码|只支持|中文)"
        blackwords = Regex.Replace(blackwords, "(?<=[\u4e00-\u9fa5])[^\|\u4e00-\u9fa5]*(?=[\u4e00-\u9fa5])", "[^\u4e00-\u9fa5]*")
        Dim Matchs = Regex.Matches(keywords, blackwords)
        For Each Match As Match In Matchs
            If Match.Success Then
                Debug.Print("敏感字符:  """ & Match.Value & """  位于该字符串第" & (Match.Index + 1).ToString & "个字符起共" & Match.Length.ToString & "个字符")
            End If
        Next