正则表达式从字符串列表中获取字符串

时间:2019-07-19 13:05:57

标签: java regex

我正在处理一些正则表达式,并尝试从以下看起来像列表的字符串中获取字符串

String stringList = "['my', 'na_me', 'is', 't-est']";

这样我就可以获得所有匹配结果的列表并将其放入真实列表中。

我尝试使用此表达式\w+,但是't-est'字符串被拆分为该表达式。看起来不错,没有包含连字符 -

List<String> list = ['my', 'na_me', 'is', 't', 'est'];

我一直在寻找的结果如下

List<String> list = ['my', 'na_me', 'is', 't-est'];

我无法获得想要的结果,请帮助

2 个答案:

答案 0 :(得分:1)

您可以使用以下正则表达式const Foo = ({ onConfirm }) => { return ( <ModalWrapper onConfirm={onConfirm} body="Hello" > {showModal => ( <Button onClick={showModal}>Show modal</Button> )} </ModalWrapper> ); }

这是一个例子:

[\w-]+

希望我进一步推动了你。

答案 1 :(得分:1)

通过使用正则表达式'([^']*)',内容可以是任何字符,只要它不是'。 我假设您只是想要不带引号的值。

import java.util.List;
import java.util.ArrayList;
import java.util.regex.Pattern;
import java.util.regex.Matcher;

public class Test {
    public static void main(String[] args) {
        String input ="['my', 'na_me', 'is', 't-est']";

        List<String> allMatches = new ArrayList<>();
        Matcher m = Pattern.compile("'([^']*)'")
                .matcher(input); /** note the "\\" two times to get an escaped "\" **/
        while (m.find())
            allMatches.add(m.group(1));
        System.out.println(allMatches); /** output: [my, na_me, is, t-est] **/
    }
}