正则表达式PHP的preg_replace交换比赛和匹配的多个实例
问题描述:
我正在寻找一个在preg_replace函数为PHP以下情况下正则表达式:正则表达式PHP的preg_replace交换比赛和匹配的多个实例
- 例如串
"Bjerre- Jonas, Jorgensen- Silas, Wohlert- Johan, Madsen- Bo"
- 所需的字符串
"Jonas Bjerre, Silas Jorgensen, Johan Wohlert, Bo Madsen"
- 字符串是csv字段和双引号是外壳并且是字符串的一部分
- 可能存在任何次数的事件,包括无 - 示例显然有4
- 有一个一致的
-
以匹配分离比赛被换
我在PHP和正则表达式一个小白,并已被玩弄于阴凉test arena的东西像preg_replace("/^\"(?<=-)/", ""$2 $1$3"", $input_lines);
与可怕的结果。感谢帮助!
答
([^," -]*)\s*-\s*([^," ]*)
试试看。
http://regex101.com/r/hI0qP0/20
$re = "/([^\", -]*)\\s*-\\s*([^,\" ]*)/m";
$str = "\"Bjerre- Jonas, Jorgensen- Silas, Wohlert- Johan, Madsen- Bo\"";
$subst = "$2 $1";
$result = preg_replace($re, $subst, $str);
谢谢,VKS!它抱怨,如果我使用每个演示'g'修饰符,但似乎没有任何修饰符工作正常。 – BartmanEH
@BartmanEH'g对于preg_replace()是隐含的,您不需要包含它。' – vks
我在短划线之后添加了一个空格,仅匹配' - '的唯一大小写,如下所示:'/([^“ - ] *)\ s * - \ s *([^,“] *)/'现在它适用于带连字符姓的以下字符串:'”Reisle- Martin,Malinowski-Jay,Brant-Briscall-Aiden,Vaughan - Elliot,Dolmont-Mark“'回来'”Martin Reisle,Jay Malinowski,Aiden Brant-Briscall,Elliot Vaughan,Mark Dolmont“' – BartmanEH