从字符串中获取 2 个字符之间的值

Fetch value between 2 characters from a string

我得到以下字符串作为输出

RX Power:    -3.4    dBm (460.9uW)

我尝试了下面的代码,但得到的输出类似于

:    -3.4    d

我要输出

-3.4
$pattern = '(?s)\:.*? d+'
[regex]::Matches($RXTX_Data[0], $pattern).Value

请让我知道这里缺少什么

尝试 \s(-?\d+.?\d+)\s 你的模式。


  • \s 表示数字两边的空白字符
  • -?用于检查“-”是否在号码组中
  • .?用于检查“.”在号码组
  • \d+ 匹配号码组中的1个或多个号码
  • () 用于指定您要捕获的组,即数字组

它在 https://regex101.com 对我有用。如果你还没有听说过,这是练习正则表达式的好地方。

(假设您要获取 dBm 值)

您可以 select 使用关键字之间的文本。

RX Power:(.*)dBm

这将为您提供包含空格(前导和尾随)的答案 - 但您可以轻松删除这些空格。

$pattern = 'RX Power:(.*)dBm'
[regex]::Matches($RXTX_Data[0], $pattern).Value.Replace(" ","")

我确定您也可以在正则表达式中删除它,但我只能使用以下方法删除前导空格:

RX Power:\s*(.*)dBm