RegEx for PHP preg_replace交换匹配和匹配多个实例

时间:2015-06-14 17:39:56

标签: php regex preg-replace

我正在为PHP中的preg_replace寻找一个RegEx,用于以下场景:

  • 示例字符串"Bjerre- Jonas, Jorgensen- Silas, Wohlert- Johan, Madsen- Bo"
  • 所需字符串"Jonas Bjerre, Silas Jorgensen, Johan Wohlert, Bo Madsen"
  • string是一个csv字段,双引号是附件,是字符串
  • 的一部分
  • 可能存在任意数量的事件,包括无 - 该示例显然有4
  • 在分隔要交换的匹配项时,有一致的-匹配

我是PHP和RegEx的菜鸟,并且在preg_replace("/^\"(?<=- )/", ""$2 $1$3"", $input_lines);之类的东西中玩过public class MainActivity extends ActionBarActivity { Toolbar toolbar; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); toolbar = (Toolbar) findViewById(R.id.app_toolbar); setSupportActionBar(toolbar); Profile profile = (Profile) getSupportFragmentManager().findFragmentById(R.id.profileFragmentInMain); profile.setUp((DrawerLayout) findViewById(R.id.drawer),toolbar); } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } ,结果很糟糕。谢谢你的帮助!

1 个答案:

答案 0 :(得分:1)

([^," -]*)\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);