regex在term之前选择文本



我有一些具有相同模式的字符串:

"abc "abc 2x rf"abc 3x gh">

我需要选择"x"one_answers"x"前面的数字。我该怎么做呢?谢谢。

["abc 1x de","abc 2x rf","abc 3x gh","4x ABC" "ABC 5x"].map { |s| s[/(?>dx)/] }
=> ["1x", "2x", "3x", "4x"]

使用String#scan检查b单词边界。使用Ruby 3.0.2:

["abc 1x de", "abc 2x rf", "abc 3x gh", "4x ABC", "ABC 5x"].
flat_map { _1.scan /b(?:d+x)b/ }
#=> ["1x", "2x", "3x", "4x", "5x"]

只要x不出现在你的其他字符串中,无论你有多少位数字,或者子字符串出现在你的字符串中的哪个位置,这都将工作。

最新更新