如何在linux命令中选择正则表达式中的节

时间:2016-10-26 11:33:25

标签: regex sed csplit

我有这些行,每行开始一个单词然后相等和几个句子所以我喜欢选择每个部分。例如:

      delete = \account
          user\
          admin
           admin right is good.
      add = \
          nothing
          no out
          input output is not good 
      edit = permission 
          bob
          admin
          alice killed bob!!!

我想选择一个部分,例如:

  add = \
      nothing
      no out
      input output is not good 

我喜欢用正则表达式来做。

2 个答案:

答案 0 :(得分:0)

你的问题有点模糊,但你可以试试以下......

/\s*(\w+) = ([^=]*\n)*/m

......根据要求最后一部分以\ n。

终止

这适用于:

  • ' \ S *'匹配一些可选的前导空格
  • '(\ W +)'捕获部分的名称
  • ' ='匹配空格等于空格分隔符
  • '([^ =] * \ n)的'然后它捕获一个不包含等号并以换行符结尾的字符串
  • ' *'并且它最后一次做了多次

然后需要m标志来设置多行。

请参阅以下内容以快速查看为每个匹配项输出的组...

https://regex101.com/r/oDKSy9/1

(注意:根据您使用正则表达式的方式,可能不需要g标志。)

答案 1 :(得分:0)

OP解决方案。

我找到了这个解决方案:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the options menu from XML
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.options_menu, menu);

    // Get the SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    // Assumes current activity is the searchable activity
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconifiedByDefault(false); // Do not iconify the widget; expand it by default

    return true;
}

谢谢@haggisandchips