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=/(?必须是正则表达式吗?在大多数语言中,如果没有它,这可能会更容易。是的,必须是正则表达式。你能解释一下正则表达式的要求吗?我不确定你能不能在一个正则表达式中产生三行输出,下划线转换成空格。也许你可以定义一个约束更好。我做了一些改变。我只想要作者,书名,被选中