Regex 使用正则表达式将字符串与路径分开

Regex 使用正则表达式将字符串与路径分开,regex,Regex,我在这个路径中有一个文件 D:\ebook\comic\Author,_Title_of_Book_(http://google.com).cbz 我需要使用正则表达式分离字符串,并获取作者、标题和URL。 文本输出应该是 Author Title_of_Book http://google.com 到目前为止我有 ([^\\]+)\.[^\\]+$ 这将仅获取文件。说明 ^[^,]*\\([^,]*),\([^(]*)\([^]*)\([^]*)\) 此正则表达式将执行以下操作:

我在这个路径中有一个文件

D:\ebook\comic\Author,_Title_of_Book_(http://google.com).cbz
我需要使用正则表达式分离字符串,并获取作者、标题和URL。 文本输出应该是

Author
Title_of_Book
http://google.com
到目前为止我有

([^\\]+)\.[^\\]+$
这将仅获取文件。

说明
^[^,]*\\([^,]*),\([^(]*)\([^]*)\([^]*)\)

此正则表达式将执行以下操作:

  • 使用正则表达式分隔字符串,并获取作者、标题和URL
例子 现场演示

示例文本

D:\ebook\comic\Author,\u书名\u_(http://google.com).cbz
样本匹配

匹配1
1.[15-21]`作者`
2.[23-36]`书名`
3.[38-55] `http://google.com`
解释
节点说明
----------------------------------------------------------------------
^“行”的开头
----------------------------------------------------------------------
[^,]*除“,”(0次或更多次)以外的任何字符
(匹配尽可能多的金额)
----------------------------------------------------------------------
\\                       '\'
----------------------------------------------------------------------
(组和捕获到\1:
----------------------------------------------------------------------
[^,]*除“,”(0或更多)以外的任何字符
次数(与最大金额匹配)
(可能的)
----------------------------------------------------------------------
)结束\1
----------------------------------------------------------------------
,_                       ',_'
----------------------------------------------------------------------
(分组并捕获到\2:
----------------------------------------------------------------------
[^(]*除:'('(0或更多)以外的任何字符
次数(与最大金额匹配)
(可能的)
----------------------------------------------------------------------
)结束\2
----------------------------------------------------------------------
_                        '_'
----------------------------------------------------------------------
\(                       '('
----------------------------------------------------------------------
(分组并捕获到\3:
----------------------------------------------------------------------
[^)]*除“)”以外的任何字符(0或更多
次数(与最大金额匹配)
(可能的)
----------------------------------------------------------------------
)结束\3
----------------------------------------------------------------------
\)                       ')'
----------------------------------------------------------------------

UPDATE@RoYoMi给出了一个高得多的答案,但由于我已经完成了这项工作,给你

因为你只在这里标记了regex,我不知道你需要什么语言来让它工作。我为这个例子做了一个测试。这是代码

<p>
  <input type="text" id="val" value="D:\ebook\comic\AuthorLastName_FirstName,Title_of_Book_(http://google.com).cbz" style="width:100%;" />
</p>
<div id="name"></div>
<div id="title"></div>
<div id="url"></div>
<script>
    var val = document.getElementById("val").value;

    var name = /\w+(?=[,])/.exec(val).toString().replace(/[_]/g, " ");
    var title = /\w+(?=[(])/.exec(val).toString().replace(/[_]/g, " ");

    var url = /((http)(s?)[:](\/\/))(.*?)(?=[)])/i.exec(val)[0].toString();
    //Better suited with a look behind like this:
    //var url = /(?<=[(])(.*?)(?=[)])/.exec(val).toString();
    //But JS doesn't support look behinds.

    document.getElementById("name").innerHTML = name;
    document.getElementById("title").innerHTML = title;
    document.getElementById("url").innerHTML = url;
</script>

var val=document.getElementById(“val”).value; var name=/\w+(?=[,])/.exec(val.toString().replace(/[[u]/g,”); var title=/\w+(?=[(])/.exec(val.toString().replace(/[[u]/g,”); var url=/((http)(s?[:])(\/\/)(.*?(=[)])/i.exec(val)[0].toString(); //更适合这样的后视:
//变量url=/(?必须是正则表达式吗?在大多数语言中,如果没有它,这可能会更容易。是的,必须是正则表达式。你能解释一下正则表达式的要求吗?我不确定你能不能在一个正则表达式中产生三行输出,下划线转换成空格。也许你可以定义一个约束更好。我做了一些改变。我只想要作者,书名,被选中