【问题标题】:Regular expression to read only digits after last slash正则表达式在最后一个斜杠后只读取数字
【发布时间】:2016-10-13 07:26:56
【问题描述】:

我正在尝试使用正则表达式读取最后一个 \ 之后的数字,但无法做到。

我尝试过使用[^\\]*$([^/]+$),但两者都不起作用。第一个删除数字。

请你给点建议?

我的样本数据是:

C:\Users\Documents\Projects\Austraila\Customer\Organisation\176276

【问题讨论】:

  • 哪种语言/正则表达式引擎? “阅读”是什么意思?捕获?代替?而且你知道正斜杠和反斜杠是不同的字符,对吧?
  • 你的样本数据是什么?
  • 您认为我们可以如何获取您的数据?
  • @Arkej 可能是路径本身。
  • 您可以使用/\\([0-9]+)$/ 并获取第 1 组的内容。

标签: javascript regex


【解决方案1】:

在 JS 中,你可以使用

/\\(\d+)$/

regex demo

\\(\d+)$ 正则表达式匹配:

  • \\ - 文字 \ 符号
  • (\d+) - 第 1 组:一位或多位数字
  • $ - 字符串结束。

var path = "C:\\Users\\Documents\\Projects\\Austraila\\Customer\\Organisation\\176276";
var m = path.match(/\\(\d+)$/);
if (m) {
  console.log(m[1]);
}

Lua solution:

print(
    string.match(
        [[C:\Users\Documents\Projects\Austraila\Customer\Organisation\176276]], 
        [[\(%d+)$]]
    )
)

【讨论】:

  • 请注意,如果末尾有数字以外的字符,您可以使用基于否定字符类的正则表达式,例如/\\([^\\]+)$/[^\\]+ 将匹配除 \ 之外的 1 个或多个符号。
  • 我添加了一个 Lua 模式解决方案。基本上是一样的,只是\d必须改成%d Lua模式,string.match如果在模式中定义,则返回捕获值的列表。由于有 1 个捕获组,因此结果是末尾的数字。
【解决方案2】:

当且仅当您一直使用这种结构时,您也可以使用.split()(OP 在标签中提到了 JavaScript,所以我提供了这个替代方案作为答案)。

var url = "C:\Users\Documents\Projects\Austraila\Customer\Organisation\176276";
var split = url.split("\"); /* Divides the string into an array which is splitted by \ */
var item = url[url.length - 1] /* Grab the last value in the array (176276) */

console.log(item)
// Prints 176276

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-15
    • 2015-08-16
    • 2020-05-15
    • 2022-01-27
    • 2011-04-19
    • 2021-11-18
    • 1970-01-01
    相关资源
    最近更新 更多