後,我有一個字符串,我需要拆分的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