正则表达式" SL"西班牙商业 - 正则表达式两个字符都没有任何一方

时间:2015-04-07 09:47:14

标签: php regex string

我有一个用户可以输入客户信息的系统。当信息被消除时,我做了一些事情来清理信息,例如更改案例,删除特殊字符等。我遇到的一个问题是有限公司具有以下语法,公司名称:

company name SL

由于我目前将所有内容更改为小写,然后使用ucwords,我最终会使用Sl。我正在寻找解决这个问题的最佳方法,并且正面考虑正则表达式。

不幸的是,正则表达式不是我的强项,并希望有人能指出我正确的方向。我希望做的是找到一个包含两个字母SL的字符串。我需要能够找到字符串,无论字符如S.L.,S.L,也无论如何。如果找到该字符串,请将其替换为SL

在这个内部我还需要知道它发现使用字符串替换来改变它的字符。

如果你想象我使用字符串替换的当前方法正在变得非常大:

return str_replace(array(',','sl.','s.l.','s.l','sl ',' sl','SL.','Sl.','S.L.','S.l.','S.l','S.L','SL'),array("","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL","SL"),self::properCase($name))

上面的问题也是,如果有人说"比尔斯莱德sl",没有正则表达式只匹配那两个字母,我怎么能只说大写它们。我需要确保任何一方都没有。

非常感谢任何帮助或指示。

3 个答案:

答案 0 :(得分:1)

使用此RegEx:

/\bs\.?l?\.?\b/i

RegEx Demo and Explanation

<小时/> 将此RegEx与PHP一起使用:

$regex_pattern = "/\bs\.?l?\.?\b/i"; 
$string = "company name S.l\ncompany name Sl.\ncompany name S.l.\ncompany name Sl\ncompany name s.l.\ncompany name sl\ncompany name s.L"; 
$replacement  = " SL";
$result = preg_replace($regex_pattern, $replacement, $string);

echo $result;

http://writecodeonline.com/php/上试用此工作代码,以便快速查看结果。 :)

希望它有所帮助。


阅读:preg_replace | PHP manual

答案 1 :(得分:0)

您可以使用此正则表达式:\bs[.]?l(?:[.]?|\b)并替换为SL

以下是examplesample working code on TutorialsPoint

$re = "/\\bs[.]?l(?:[.]?|\\b)/i"; 
$str = "company name Sl\ncompany name s.l.\ncompany name sl\ncompany name s.L"; 
$subst = "SL"; 
$result = preg_replace($re, $subst, $str);

答案 2 :(得分:0)

$replacement= "SL"; 
$pattern = '/(\bs)(.?)(\s?)(l\b)(.?)/i';

$input = "
  company name Sl
  company name s.l.
  company name sl
  company name s.L
  company name s. L
  company name s l
  company name S, L.
";

$result = preg_replace($pattern, $replacement, $input);
echo $result;

转到此http://www.phpliveregex.com/p/aJi链接,然后点击preg_replace