首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >除了括号内,regex得到每个非特殊的单词。

除了括号内,regex得到每个非特殊的单词。
EN

Stack Overflow用户
提问于 2018-11-13 15:01:53
回答 1查看 52关注 0票数 1

我有以下字符串:

代码语言:javascript
复制
[
    '全新Precision 5530二合一移动工作站',
    '15" (5530)',
    '新14"灵越燃7000三边微边框',
    '灵越新13"(7380)轻薄本 热卖',
    'XPS新15"(9570)热卖',
    '新15"灵越5000(Intel)',
    '12” 二合一 (5290)'
]

我需要删除每个非汉字字符(如产品线名、型号),包括括号内的字符,但我也不能替换(Intel) (可以是不在正则表达式匹配上的括号内的其他字符串)。

现在,我有以下内容:pattern = /(\w+\s+\d+|\(?\d{4}\)?|[a-z]+)/gi

这将应用于前一个数组,返回

代码语言:javascript
复制
[
     ["Precision 5530"],
     ["(5530)"],
     ["7000"],
     ["(7380)"],
     ["XPS", "(9570)"],
     ["5000", "Intel"],
     ["(5290)"]
]

这几乎是完美的,除了"Intel“不应该存在.我似乎无法到达排除Intel的正则表达式(或者任何在()中的普通字母)

关于regex101:https://regex101.com/r/vqO0BO/2

有人能帮忙吗?

解决方案:使用答案中提供的正则表达式(同时获得括号)和一点js,我设法从我想要的文本中获取newText。

代码语言:javascript
复制
newText = text.replace(pattern, function(a, b) {
                    if(a === b) {
                        return " ";
                    } else {
                        if(a !== undefined) {
                            return a;
                        } else if(b !== undefined) {
                            return b;
                        } else { //If a and b are undefined, just replace the "undefined" with ""
                            return "";
                        }
                    }
                }).trim();
EN

回答 1

Stack Overflow用户

发布于 2018-11-13 17:23:40

我建议匹配括号内的内容,并匹配和捕获其余部分。一旦捕获组匹配某些文本,则可以用空格替换匹配,如果组1不匹配,则替换为整个匹配。

代码语言:javascript
复制
var strs = [
    '全新Precision 5530二合一移动工作站',
    '15" (5530)',
    '新14"灵越燃7000三边微边框',
    '灵越新13"(7380)轻薄本 热卖',
    'XPS新15"(9570)热卖',
    '新15"灵越5000(Intel)',
    '12” 二合一 (5290)'
];
var pattern = /\([a-z]+\)|(\w+\s+\d+|\(?\d{4}\)?|[a-z]+)/gi;
for (var s of strs) {
  console.log(
    s.replace(pattern, function (a, b) {
       return b ? " " : a; 
    }).trim()
  );
}

Regex详细信息

  • \( - (
  • [a-z]+ - 1+字母
  • \) -a )
  • | -或
  • (\w+\s+\d+|\(?\d{4}\)?|[a-z]+) -第1组: 1+单词字符、1+空格和1+数字,或可选的(、4位数字和可选的),或1个或更多的ASCII字母。
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53283848

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档