Posts tagged 正则

一个用于SQL Server 正则替换的函数

0
create function dbo.regexReplace
(
@source varchar(5000), 原字符串
@regexp varchar(1000), 正則表換式
@replace varchar(1000), 替換值
@globalReplace bit = 0, 是否是全局替換
@ignoreCase bit = 0 是否忽略大小寫
)
returnS varchar(1000) AS
begin
declare @hr integer
declare @objRegExp integer
declare @result varchar(5000)

exec @hr = sp_OACreate VBScript.RegExp, @objRegExp OUTPUT
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, Pattern, @regexp
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, Global, @globalReplace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OASetProperty @objRegExp, IgnoreCase, @ignoreCase
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OAMethod @objRegExp, Replace, @result OUTPUT, @source, @replace
IF @hr <> 0 begin
exec @hr = sp_OADestroy @objRegExp
return null
end
exec @hr = sp_OADestroy @objRegExp
IF @hr <> 0 begin
return null
end

return @result
end
GO

php 正则 不包含某字符串的正则表达式

0

判断一个字符串中是否含有另一字符串,php有很多方法

常见函数 strstr($str, “abc”);

正则匹配 preg_match(”/(abc)?/is”, $str);

但是要匹配一个字符串中,不包含某字符串,用正则就比较麻烦了

如果不用正则 !strstr($str, “abc”); 就可以解决问题了

但是用正则呢,就只有这样了,”/^((?!abc).)*$/is”

//————————————————

  1. <?php  
  2.     $str = dfadfadf765577abc55fd;
  3.     $pattern_url = /^((?!abc).)*$/is;
  4.     if (preg_match($pattern_url, $str)){  
  5.         echo 不含有abc!;
  6.     }else{  
  7.         echo 含有abc!;
  8.     }  
  9. ?>

//————————————————

结果为:false,含有abc!
$str = “2b3c4d5c”;
注意:[^(abc)] 这个语法是逐个检查$str中的字符是否不在 a b c中,
preg_match(”/[^(abc)]/s”, $str, $arr);
其中字符 2 就不在 a b c 中,所以$arr返回值为2;

同时匹配,包含字符串 “abc”,而且不包含字符串 “xyz”
“/(abc)[^((?!xyz).)*$]/s”

Go to Top