我有一个正则表达式,其中有 | (或) 其中,我想确定 或 的哪一部分在正则表达式中匹配:
可能的输入:
-- 输入 1--
Stuff here to keep.
-- First --
all of this below
gets
deleted
-- 输入 2--
Stuff here to keep.
-- Second --
all of this below
gets
deleted
正则表达式匹配传入输入源的一部分并确定 | 的哪一部分(或)匹配? “--第一--”或“--第二--”
Pattern PATTERN = Pattern.compile("^(.*?)-+ *(?:First|Second) *-+", Pattern.DOTALL);
Matcher m = PATTERN.matcher(text);
if (m.find()) {
// How can I tell if the regex matched "First" or "Second"?
}
如何判断哪个输入被匹配(第一个或第二个)?
最佳答案
正则表达式不包含该信息。但是,您可以使用一些其他组来解决这个问题。
示例模式:(?:(First)|(Second))
在字符串 First
上,第二个捕获组将为空,而在 Second
中,第一个捕获组将为空。对返回到 Java 的组进行简单检查就会告诉您正则表达式的哪一部分匹配。
编辑:为了简单起见,我假设使用 First
和 Second
作为占位符,实际上表示更复杂的表达式。如果您确实想查找两个字符串中的哪一个匹配,则使用单个捕获组(如下所示:(First|Second)
)并将其内容与 First
进行比较会很好地完成工作。
关于java - 如何判断子串OR匹配?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21246606/