首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何匹配和显示已经存在的正则表达式的最后一个字符?这不是线的尽头

如何匹配和显示已经存在的正则表达式的最后一个字符?这不是线的尽头
EN

Stack Overflow用户
提问于 2022-08-11 07:59:23
回答 2查看 38关注 0票数 0

假设我有100个字符行。我有一个REGEX正确匹配,一个字符串,让我们说,在中间25个字符(既不是在开头,也不是在末尾)。如何在中间匹配以上25个字符中的最后5个字符?

当前REGEX:(dBm)\s+.{7})(\b)

实例:

台词:

Tx输出功率(dBm) -2.31 3.50 0.50 -8.20 -12.20

Rx光功率(avg dBm) -3.72 3.50 0.50-14.40-18.39

我将以下内容与我的REGEX -(DBm)\s+.{7}(\b)匹配

Tx输出功率(dBm) -2.31 3.50 -8.20 -12.20

Rx光功率(avg dBm) -3.72 3.50 -14.40-18.39

我真正感兴趣的是:

Tx输出功率(dBm) -2.31 3.50 -8.20 -12.20

Rx光功率(avg dBm) -3.72 3.50 -14.40-18.39

谢谢

EN

回答 2

Stack Overflow用户

发布于 2022-08-11 11:11:18

正则表达式

代码语言:javascript
复制
.*\([^\)]*\) ([^ ]+).*

结果

-2.31 -3.72 -2.31 -3.72 -2.31 -3.72

示例https://regex101.com/r/S9NO4o/1

票数 0
EN

Stack Overflow用户

发布于 2022-08-11 16:23:56

您可以使用一个捕获组:

代码语言:javascript
复制
\([^()]*dBm\)\s+(-?\d+(?:)\.\d*)\b

解释

  • \(匹配(
  • [^()]*匹配0+字符( ()除外)
  • dBm\)匹配dBm)
  • \s+匹配1+空格字符
  • ( Capture group 1
    • -?\d+(?:)\.\d*匹配可选的-,然后用可选的十进制部分匹配1+数字

  • )闭组1
  • \b阻止部分单词匹配的单词边界

Regex演示

如果只想与Java匹配:

代码语言:javascript
复制
(?<=\([^()]{0,100}dBm\)\s{0,100})-?\d+(?:)\.\d*\b

regex演示

在Java中,使用双反斜杠:

代码语言:javascript
复制
String regex = "(?<=\\([^()]{0,100}dBm\\)\\s{0,100})-?\\d+(?:)\\.\\d*\\b";
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73317219

复制
相关文章

相似问题

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