【问题标题】:Remove all before and after Number X Number删除 Number X Number 前后的所有内容
【发布时间】:2013-04-15 23:21:45
【问题描述】:

我在这里问我的第一个问题,因为我需要隔离一些字符

Fri  2 Mar 2012  11:14:25
JPEG **960x640** 960x640+0+0 8-bit sRGB 64.7KB 0.016u 0:00.017

我想要隔离 960X640 但这个变量每次都会改变:( 我得到的结果和例子一样在很多行上。

所以我需要一个正则表达式来删除 960X640 之前和之后的所有内容。

如果你能帮助我,非常感谢你:)

【问题讨论】:

  • 你试过了吗?
  • \d+x\d+ 将匹配任何 numberxnumber
  • @HamZaDzCyber​​DeV,为什么不将其发布为答案?
  • @ASGM 既然 OP 想要替换,我们需要他使用的语言?

标签: regex numbers expression character ranorex


【解决方案1】:

这个正则表达式应该匹配目标:

[0-9]+x[0-9]+

所以这应该可以删除其他所有内容:

Search: .*[0-9]+x[0-9]+.*
Replace (perl etc): \1 
Replace (java): $1

【讨论】:

  • 好的,谢谢你的相同结果,但它不起作用,但如果我使用 [0-9]+x[0-9] 的查找操作,我得到“960x6”总比没有好:)如何指定获取 960x640?
  • 您使用的软件好像看不懂\d。我已经编辑了使用基本正则表达式的答案。现在试试。请注意,正则表达式是 \d+x\d+ - 注意最后的加号 - 它应该可以工作。
  • Ok [0-9]+x[0-9]+ 如果您在 2012 年 3 月 2 日星期五 11:14:25 搜索,则效果很好 JPEG 960x640 960x640+0+0 8-bit sRGB 64.7KB 0.016u 0:00.017 找到 960x640 非常感谢
【解决方案2】:

Sed 会使用如下语法:

s/^[^0-9]+[[:space:]]([0-9]+x[0-9]+)[[:space:]].*$/\1/

Perl 看起来像:

s/^\D+\s([0-9]+x[0-9]+)\s.*$/$1/

例如:

$ echo 'JPEG 960x640 960x640+0+0 8-bit sRGB 64.7KB 0.016u 0:00.017' | sed -r 's/^[^0-9]+[[:space:]]([0-9]+x[0-9]+)[[:space:]].*$/\1/'
960x640

【讨论】:

  • 好的,谢谢你,但它不起作用,但如果我使用 [0-9]+x[0-9] 的查找操作,我得到“960x6”总比没有好:) 我怎么能指定获取 960x640 ?
  • @stevefigueras 您在第二个字符类中省略了 +。它应该是 [0-9]+x[0-9]+
【解决方案3】:

这一定能解决你的问题:

/\d+x\d+/

【讨论】:

  • 所有格量词可能不受支持。通常,正常的贪婪量词就足够了。
  • @nhahtdh:pehraps,但未指定语言!使用的语言不支持\d类或者不需要这种分隔符!
  • 有些语言支持\d但不支持++,只支持普通的+,如JS、Python re
  • @stevefigueras : 你使用什么语言或工具?
猜你喜欢
  • 2012-01-16
  • 2015-08-18
  • 2022-11-07
  • 2019-03-22
  • 1970-01-01
  • 2016-02-25
  • 1970-01-01
  • 1970-01-01
  • 2016-10-30
相关资源
最近更新 更多