我在javascript中有这样的字符串
at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/logger.service.ts:107:29)
我想从中提取logger.service。公式介于上一次/到最后一次.之间。
我可以使用/从上一次/([^\/]+$)/g中提取,但不知道如何将查找限制为最后一次.
注:这些是其他例子:
at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/logger.ts:107:29)预期:logger
at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/logger.js:107:29)预期:logger
at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/api.logger.service.ts:107:29)预期:api.logger.service
发布于 2022-10-19 23:20:47
您可以使用
/.*\/(.*)\./详细信息
.* -除与possible\/一样多的行中断字符以外的任何零或多个字符--a / char(.*) - Group 1:除行中断字符与possible\.一样多的任何零字符或多个字符a . char.请参阅JavaScript演示:
const text = "at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/api.logger.service.ts:107:29)";
const match = text.match(/.*\/(.*)\./)
if (match) {
console.log(match[1]);
}
发布于 2022-10-19 23:21:24
我们可以在这里尝试使用regex替换方法:
var log = "at LoggerService.log (/Users/apps/api/webpack:/pcs-goc-api/pcs-libs/logger/src/api.logger.service.ts:107:29)";
var output = log.replace(/^.*\/|\.[^.]*$/g, "");
console.log(output);
这里的regex模式表示匹配:
^.*\/所有内容从启动到并包括最后一个/| OR\.[^.]*$所有内容从最后一个点到结束然后,我们用空字符串替换,留下我们想要的字符串。
发布于 2022-10-19 23:17:48
([^\/]+)[.][^:]+:\d+:\d+演示:https://regex101.com/r/FeLRmi/1
[.] => .character[^:] ":"[^:]+ =>除“:”[^:]+ =>以外的任何字符一个或多个[^:]:\d+ =>一个或多个数字后面的":"所有其他regex语句都是您自己的。
https://stackoverflow.com/questions/74132825
复制相似问题