如果我有一个包含以下元素的列表
list[0] = "blach blah blah"
list[1] = "SELECT something"
list[2] = "some more text"
list[3] = "some more text"
如何找到字符串以SELECT开头的索引。
我可以list.indexOf("SELECT something");
但这是一个动态列表。 SELECT something
不会永远是SELECT something
。它可以是SELECT somethingelse
或任何其他内容,但第一个字始终为SELECT
。
有没有办法将正则表达式应用于indexOf搜索?
答案 0 :(得分:18)
def list = ["blach blah blah", "SELECT something", "some more text", "some more text"]
def index = list.findIndexOf { it ==~ /SELECT \w+/ }
这将返回与正则表达式/SELECT \w+/
匹配的第一个项目的索引。如果要获取所有匹配项的索引,请用
def index = list.findIndexValues { it ==~ /SELECT \w+/ }
答案 1 :(得分:6)
您可以在find中使用正则表达式:
def list = ["blach blah blah", "SELECT something", "some more text", "some more text"]
def item = list.find { it ==~ /SELECT \w+/ }
assert item == "SELECT something"
list[1] = "SELECT somethingelse"
item = list.find { it ==~ /SELECT \w+/ }
assert item == "SELECT somethingelse"