gpt4 book ai didi

javascript - 在左括号前查找单词

转载 作者:行者123 更新时间:2023-11-30 09:47:24 25 4
gpt4 key购买 nike

我有以下代码行:

let regexp: RegExp = new RegExp('(?=\\s(.+))');

我想做的是在代码文件中找到 ( 之前的单词。

就我所拥有的而言,它比我想要的更匹配。

this is a test (

匹配:是一个测试(我只是想要test

for(

没有找到匹配项。

那么,我怎样才能得到括号前的单词呢?

最佳答案

(?=\\s(.+)) 正则表达式匹配一个空位置(因为整个模式呈现积极的前瞻性,零宽度断言不消耗任何字符)后跟1 个空格和 1+ 个除换行符以外的任何字符(捕获到第 1 组中)。因此,它可能匹配多个单词。

你可以使用

\S+(?=\s+\()

\w+(?=\s*\()

参见 regex demo

模式解释:

  • \w+ - 1 个或多个单词字符(如果使用 \S+,则为 1+ 个非空白字符)...
  • (?=\s*\() - 在 0+ 个空格 (\s*) 后跟文字 ( char (或在 1+ 个空格前跟 ( 如果使用 (?=\s+\())。

var re = /\w+(?=\s*\()/; 
var str = 'this is a test (';
var res = (m = str.match(re)) ? m : "";
console.log(res[0]);

备选方案:捕获组

您可以在没有任何环顾四周的情况下实现相同的目标。我喜欢前瞻,因为它们在大多数情况下并不昂贵,而且匹配结构更清晰(你只有一个组等于整个匹配),但在这种情况下,可以利用单纯的捕获机制

/(\w+)\s*\(/

我们需要的值是用(\w+)捕获的,这是模式的括号部分。查看regex demo

var re = /(\w+)\s*\(/; 
var str = 'this is a test (';
var res = (m = str.match(re)) ? m[1] : "";
console.log(res);

关于javascript - 在左括号前查找单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38284359/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com