你如何在eclipse中使用点(DOTALL)匹配多行来查找正则表达式

时间:2014-08-31 22:44:11

标签: regex eclipse multiline

我想转换一下:

  def getEmployeeReminders(employeeId: Int, page: Option[Int], pageSize: Option[Int], js_callback: Option[String]) = Action {
      val reminders = Reminder.listForOne(employeeId, page, pageSize)
      getResponse(reminders, js_callback)
    }

到此:

  def getEmployeeReminders(employeeId: Int, page: Option[Int], pageSize: Option[Int], js_callback: Option[String]) =
    Restrict(companyAdmin, new MyDeadboltHandler) {
      Action {
        val reminders = Reminder.listForOne(employeeId, page, pageSize)
        getResponse(reminders, js_callback)
      }
    }

在eclipse scala编辑器中多次。

如何使用'。*'匹配多行? 另外,你如何将换行注入替换?

2 个答案:

答案 0 :(得分:4)

您可以使用(?s)内嵌模式修改器,它也会强制点.匹配换行符。在你的答案中,你使用的是否定的字符类,所以不需要使用这个修饰符,只需使用\n

Find:    = (Action[^}]*})
Replace: = \n    Restrict(companyAdmin, new MyDeadboltHandler) {\n     \1}

使用点.代替:

Find:    (?s)= (Action.*?})
Replace: = \n    Restrict(companyAdmin, new MyDeadboltHandler) {\n     \1}

答案 1 :(得分:2)

将以下内容放在'find'表达式的最开头:(?s) 另请注意,我们使用\ R来插入换行符:

示例:

find:      (?s)= (Action[^}]*})
replace:   = \R    Restrict(companyAdmin, new MyDeadboltHandler) {\R     \1}

这类似于:

  def getEmployeeReminders(employeeId: Int, page: Option[Int], pageSize: Option[Int], js_callback: Option[String]) = Action {
      val reminders = Reminder.listForOne(employeeId, page, pageSize)
      getResponse(reminders, js_callback)
    }

用这个替换它:

  def getEmployeeReminders(employeeId: Int, page: Option[Int], pageSize: Option[Int], js_callback: Option[String]) =
    Restrict(companyAdmin, new MyDeadboltHandler) {
      Action {
        val reminders = Reminder.listForOne(employeeId, page, pageSize)
        getResponse(reminders, js_callback)
      }
    }