正在提取...'测试 00000-000-00000-000-56 gram-0020 Something-030 Label'.pdf;
不是扩展名。
<?xml version="1.0" encoding="UTF-8"?>
<rows created="2017-06-19T23:20:33.227+02:00" producer="sqlexec"
select="SELECT V_Orig_file_name
FROM Project_Doc_VersionQ
WHERE V_Id = '00002_0000005592'" startrec="1">
<row>
<c n="V_Orig_file_name">Testing 000000-000-00000-000-56 gram-0020 Something-030 Label.pdf</c>
</row>
</rows>
/rows/row/c/text()
-> 让我......'测试 000000-000-00000-000-56 gram-0020 Something-030 标签。 pdf
'
我如何包含正则表达式来获取...'Testing 000000-000-00000-000-56 gram-0020 Something-030 Label'
最佳答案
正如 YCF_L 所示,您需要的是一个捕获组。每当您尝试使用正则表达式从另一个字符串获取字符串时,您将使用捕获组。在大多数情况下,将通过在正则表达式中使用括号来添加它们。就您而言,您需要选择名称而不是扩展名。有很多方法可以做到这一点,但就您而言,似乎您不一定知道文件的名称,这就是为什么您应该使用通配符选择器 .
并且您会想要这个选择要贪心。我实际上建议使用 +
贪婪量词,因为它将保证您始终拥有一个文件名。 *
将匹配 0 个或多个字符,+
将匹配 1 个或多个字符。添加与 YCF_L 的答案相同的捕获组,您可以添加句点文字 \.
反斜杠转义句点,以便它不会被解释为通配符。如果您愿意,您还可以添加特定扩展:
(.+)\.(pdf|zip|jpg)
您会注意到第二组括号在那里。我提出这一点是因为第一组充当捕获组(它将匹配的内容放入变量中),而第二组由于 |
字符而成为非捕获组。在第二组中,您说它可以是 pdf
OR zip
OR jpg
并且您实际上不会有一个包含这些匹配项的变量。希望这有帮助!
关于javascript - 希望在 xPath 中使用正则表达式提取文件名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44655087/