javascript - 希望在 xPath 中使用正则表达式提取文件名

标签 javascript regex

正在提取...'测试 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&#xa;FROM Project_Doc_VersionQ&#xa;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/

相关文章:

javascript - 当 AngularJS 中没有 ngRepeated 时,如何在我的 DOM 中排序?

javascript - 为什么我从函数中得到错误的结果?

javascript - 使用 javascript/jQuery 更改类的背景颜色属性

javascript - 塞萨尔解密。如何处理非字母数字字符 | JS

regex - Blueprism:如何在计算阶段使用替换功能?

python - 如何使用Python的re模块检测字符串中的重复模式

javascript - 在加载时绑定(bind) ng-model 中的 ng-options(类似于双向绑定(bind))

javascript - Jquery onclick 动态变化

regex - 如何使用 sprintf 创建一个正则表达式来匹配文本文件中的 1 个但不超过 N 个连续单词?

java - 正则表达式不会将特定部分而不是整个字符串提取到组中