正则取出一个字符串小括号中的内容

'dsjsakdjasdk__(123273872381)'.match(/(?<=\().*(?=\))/g);

结果: [“123273872381”]
主要是用的 ?<= 和 ?="(?<=\()" 是匹配 前面有 “(” 的内容,"(?=\))" 是匹配后面有 “)” 的内容

想了解更多正则请点击链接

其他网络上的方法

1、"/(([^)]*))/"

var aa="ldfjsldfj(dsfasjfj3124123)";
var result = aa.match(/\(([^)]*)\)/);
// 此时result=["(dsfasjfj3124123)", "dsfasjfj3124123"];
if (result) {
    console.log(result[1]); // "dsfasjfj3124123"
}

这一种的解决原理是,不适用 g,正则就会生成 lastIndex(了解lastIndex点击), 下册匹配就会从lastIndex的位置开始检索,上面的正则第一次检测到 ldfjsldfj( ,下一次开始检测 dsfasjfj3124123) 由于 [^)] 排除了 “dsfasjfj3124123)” 尾部的 “)”,所以第二次结果 dsfasjfj3124123

最后总的结果:["(dsfasjfj3124123)", “dsfasjfj3124123”]

2、"/((.+))/g"

/\((.+)\)/g

测试结果如下:
'ldfjsldfj(dsfasjfj3124123)'.match(/\((.+)\)/g);
console.log(RegExp.$1); // dsfasjfj3124123

这个正则直接匹配出:(dsfasjfj3124123),再利用(.+)分组,让RegExp (正则表达式是描述字符模式的对象) 使用占位符 $1获取括号里头的内容

占位符: 顾名思义,占位符就是先占住一个固定的位置,等着你再往里面添加内容的符号,广泛用于计算机中各类文档的编辑

一个()对应一个占位符
例如:/(\d)(\w)(\D)/ ===> $1,$2,$3
(\d) - $1
(\w) - $2
(\D) - $3

其他网络上的方法的参考链接

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
假设我们要从一个字符串取出括号里面的子字符串,可以使用正则表达式和QRegExp类来实现。具体步骤如下: 1. 定义正则表达式 首先,我们需要定义一个正则表达式来匹配括号里面的内容。在本例,我们可以使用`\([^)]*\)`这个正则表达式来匹配一个以左括号开始、右括号结束的子字符串。其,`\(`和`\)`表示匹配左右括号,`[^)]*`表示匹配任意数量的非右括号字符。 2. 创建QRegExp对象 接着,我们需要创建一个QRegExp对象,并将上面定义的正则表达式传入构造函数: ```C++ QString str = "Hello (world)!"; QRegExp rx("\\([^)]*\\)"); ``` 在上面的代码,我们将定义的正则表达式作为参数传给了QRegExp的构造函数。 3. 进行匹配 现在,我们可以使用QRegExp对象进行匹配了。可以使用`indexIn()`函数来查找第一个匹配项的位置,然后使用`capturedTexts()`函数来获取所有匹配项的子字符串列表: ```C++ if (rx.indexIn(str) != -1) { QStringList matches = rx.capturedTexts(); qDebug() << matches; } ``` 在上面的代码,`indexIn()`函数返回的是第一个匹配项的位置。如果找到了匹配项,则返回其位置;否则返回-1。如果找到了匹配项,则可以使用`capturedTexts()`函数来获取所有匹配项的子字符串列表。其,第一个元素是整个匹配项的子字符串,后面的元素是每个括号内的子字符串。 完整的代码如下: ```C++ QString str = "Hello (world)!"; QRegExp rx("\\([^)]*\\)"); if (rx.indexIn(str) != -1) { QStringList matches = rx.capturedTexts(); qDebug() << matches; } ``` 输出结果为: ``` ("(world)", "world") ``` 其,第一个元素是整个匹配项的子字符串`"(world)"`,第二个元素是括号内的子字符串`"world"`。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值