我有这种格式的书籍/作者名单:
1. Suttree by Cormac McCarthy
2. Summersault by April Willis
3. Autumn's Ghost by Brian Johnson
我需要的是将其转换为这种格式:
Cormac McCarthy - Suttree
April Willis - Summersault
Brian Johnson - Autumn's Ghost
我怎么能用正则表达式做到这一点?
答案 0 :(得分:4)
将/^\d+\. (.*) by (.*)$/
替换为$2 - $1
。
请注意,书名可以包含单词“by”,理论上也可以包含作者姓名。因此,在某些情况下,可能有多种方法来解析结果,可能不清楚哪种方法是正确的解释。您可能希望在书籍列表中搜索多次出现“by”字样的行,并手动验证它们是否已正确解析。
答案 1 :(得分:0)
匹配正则表达式^\d+\.[ \t]+(.+)[ \t]+by[ \t]+(.+)$
,并使用$2 - $1
或\2 - \1
替换每个匹配项,具体取决于您的正则表达式引擎。正则表达式的工作原理如下:
^
:在一行开头匹配。\d+\.
:首先,匹配一个或多个数字后跟文字.
。[ \t]+
:匹配一个或多个空格或标签。(.+)
:尽可能多地匹配(书),并将其保存为第一个捕获组。[ \t]+by[ \t]+
:匹配字符串by
,包围一个或多个空格或标签。(.+)
:尽可能多地匹配(作者),并将其保存为第一个捕获组。$
:匹配一行的结尾。