后,我有一个字符串,我需要拆分的Java分割字符串,只有把一切都一个特定的词
SELECT a, b, c FROM X....
我需要拆分它,只保留“从....”及以后。现在我有这个,但我认为它实际上将摆脱FROM字符串也正确?
String query = xyz.getQuery();
String [] newQuery = query.split("FROM");
String splitQuery = newQuery[1];
后,我有一个字符串,我需要拆分的Java分割字符串,只有把一切都一个特定的词
SELECT a, b, c FROM X....
我需要拆分它,只保留“从....”及以后。现在我有这个,但我认为它实际上将摆脱FROM字符串也正确?
String query = xyz.getQuery();
String [] newQuery = query.split("FROM");
String splitQuery = newQuery[1];
为什么你需要这样的regex
?
没有正则表达式
溶胶1
添加到您的代码
String splitQuery = "FROM " + newQuery[1];
溶胶2
System.out.println(line.substring(line.indexOf("FROM")));
,如果你仍然需要regex
String line = "SELECT a, b, c FROM X....";
String pattern = "((FROM|from).*)";
Pattern r = Pattern.compile(pattern);
Matcher m = r.matcher(line);
if (m.find()) {
System.out.println("Found value: " + m.group(0));
}
谢谢,刚使用过的解决方案1 – Buccaneer
而不是分裂,你可以试试这个。假设你只想要的是第一个FROM
之后写入,而不是从任何嵌套FROM
:
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class Solution {
public String getSubString(String s)
{
Pattern p = Pattern.compile("FROM.+");
Matcher m = p.matcher(s);
if(m.find())
{
return m.group(0);
}
return null;
}
public static void main(String[] args) {
String query = "SELECT a, b, c FROM myTable";
Solution sol = new Solution();
String ans = sol.getSubString(query);
if(ans != null)
{
System.out.println(ans);
}
else
{
System.out.println("Not Found");
}
}
}
从这个更好的方法是先获得
FROM
的起始位置,然后只需使用
substring
方法从该点
除了字符串的长度。
除了与分裂和独到之处向前看,这样你就无法摆脱“FROM”。
@Test
public void testRegex(){
String query = "SELECT a, b, c FROM x y z";
String regex = "(?=FROM.*)|(?=from.*)";
System.out.println(query.split(regex)[1]);
assertEquals("FROM x y z", query.split(regex)[1]);
}
FROM x和yž
你不能使用'indexOf'和'substring'? – Berger
为什么你不只是得到FROM的索引,然后采取子字符串? – RE350
试试https://regex101.com/r/nM2hE9/2 – Shafizadeh