我可以在文本编辑器中使用正则表达式清理/重新格式化文本吗?

时间:2014-07-25 06:03:07

标签: regex sublimetext

我们说我有一堆这样的文字:

"title": "Blog post headline",
"url": "http://urlofblogpost.com/article",

"title": "Blog post2 headline",
"url": "http://urlofblogpost.com/article2",

或者像这样(如果我稍微清理一下):

Blog post headline
http://urlofblogpost.com/article

Blog post2 headline
http://urlofblogpost.com/article2

我可以在Sublime Text中使用搜索和替换并将其更改为?:

<a href="http://urlofblogpost.com/article">Blog post headline</a>
<a href="http://urlofblogpost.com/article2">Blog post2 headline</a>

2 个答案:

答案 0 :(得分:2)

搜索:"title":\s*"([^"]+)",?[\r\n]+"url":\s*"([^"]+)",?

替换:<a href="$2">$1</a>

the Regex Demo 中,请参阅底部的替换。

<强>解释

  • "title":匹配文字字符
  • \s*匹配可选空格
  • "匹配报价
  • ([^"]+)捕获任何不属于第1组
  • 的字符
  • ",?匹配引号和可选逗号
  • [\r\n]+匹配换行符
  • "url":"匹配文字字符
  • \s*匹配可选空格
  • ([^"]+)捕获任何不是第2组引用的字符
  • ",?匹配引号和可选逗号
  • 在替换中,$1$2插入与第1组和第2组匹配的内容

答案 1 :(得分:1)

第二个例子的解决方案,

<强>正则表达式:

([^\n]+)\n([^\n]+)(?=\n|$)

替换字符串:

<a href="\2">\1</a>

DEMO

<强>解释

(                        group and capture to \1:
  [^\n]+                   any character except: '\n' (newline) (1
                           or more times)
)                        end of \1
\n                       '\n' (newline)
(                        group and capture to \2:
  [^\n]+                   any character except: '\n' (newline) (1
                           or more times)
)                        end of \2
(?=                      look ahead to see if there is:
  \n                       '\n' (newline)
 |                        OR
  $                        before an optional \n, and the end of
                           the string
)                        end of look-ahead