如何从Ruby的字符串中提取子字符串?
例:
String1 = "<name> <substring>"
我想提取substring
从String1
(最后一次出现在IE中一切<
和>
)。
如何从Ruby的字符串中提取子字符串?
例:
String1 = "<name> <substring>"
我想提取substring
从String1
(最后一次出现在IE中一切<
和>
)。
Answers:
"<name> <substring>"[/.*<([^>]*)/,1]
=> "substring"
scan
如果只需要一个结果,则无需使用。当我们有Ruby时,
无需使用Python 。match
String[regexp,#]
请参阅:http : //ruby-doc.org/core/String.html#method-i-5B-5D
注意: str[regexp, capture] → new_str or nil
if we need only one result
在解决方案中指出的原因。而且match()[]
比较慢,因为它是两种方法而不是一种。
string[regex]
在这种情况下也可以理解,所以这就是我个人使用的方式。
您可以轻松地使用正则表达式...
在单词周围留出空格(但不能保留它们):
str.match(/< ?([^>]+) ?>\Z/)[1]
或没有空格:
str.match(/<([^>]+)>\Z/)[1]
<>
实际上是否必须是字符串中的最后一个东西。如果例如foo <bar> baz
允许使用该字符串(并应给出结果bar
),则将无法使用。
这是使用该match
方法的稍微灵活的方法。这样,您可以提取多个字符串:
s = "<ants> <pants>"
matchdata = s.match(/<([^>]*)> <([^>]*)>/)
# Use 'captures' to get an array of the captures
matchdata.captures # ["ants","pants"]
# Or use raw indices
matchdata[0] # whole regex match: "<ants> <pants>"
matchdata[1] # first capture: "ants"
matchdata[2] # second capture: "pants"