1. java中如何將字元串中含有兩個字母組成的單詞獲取出來
如果s='123abc'取得s1='abc'
用正則,例如:s="123abc4a"printre.findall("[a-z]+",s)結果是:['abc','a']。
(1)java提取p擴展閱讀
字元串主要用於編程,概念說明、函數解釋、用法詳述見正文,這里補充一點:字元串在存儲上類似字元數組,所以它每一位的單個元素都是可以提取的,如s=「abcdefghij」,則s[1]=「b」,s[9]="j",這可以給我們提供很多方便,如高精度運算時每一位都可以轉化為數字存入數組。
字元串或串(String)是由數字、字母、下劃線組成的一串字元。一般記為s=「a1a2···an」(n>=0)。它是編程語言中表示文本的數據類型。在程序設計中,字元串(string)為符號或數值的一個連續序列,如符號串(一串字元)或二進制數字串(一串二進制數字)。
補充:字元串在存儲上類似字元數組,它每一位單個元素都是能提取的,字元串的零位是它的長度,如s[0]=10,這提供給我們很多方便,例如高精度運算時每一位都能轉化為數字存入數組。
通常以串的整體作為操作對象,如:在串中查找某個子串、求取一個子串、在串的某個位置上插入一個子串以及刪除一個子串等。兩個字元串相等的充要條件是:長度相等,並且各個對應位置上的字元都相等。設p、q是兩個串,求q在p中首次出現的位置的運算叫做模式匹配。串的兩種最基本的存儲方式是順序存儲方式和鏈接存儲方式。
2. 求助 java正則表達式將括弧里的內容提取出來
1.就用LS的例子來改進吧,LS的例子用正則匹配的捕獲型,也就是說除了捕獲了/patroninfo~S0*chx/1069163/modpinfo,還捕獲了帶單引號的 '/patroninfo~S0*chx/1069163/modpinfo『 (輸出 System.out.println(mat.group(0) 就是);
這樣無論在效率還是安全性上都有欠缺。
2 Pattern.compile("\\'(.*?)\\'")也可以改為Pattern pat = Pattern.compile("\'(.*?)\'"),減少代碼冗餘和理解復雜度。
捕獲用法:
public class Test {
public static void main(String[] args) {
String str = "<a href=\"#\" onClick=\"return open_new_window( '/patroninfo~S0*chx/1069163/modpinfo' )\">";
Pattern pat = Pattern.compile("\'(.*?)\'");
Matcher mat = pat.matcher(str);
if (mat.find()) {
System.out.println(mat.group(1));
}
}
}
非捕獲方法:
public class Test {
public static void main(String[] args) {
String str = "<a href=\"#\" onClick=\"return open_new_window( '/patroninfo~S0*chx/1069163/modpinfo' )\">";
Pattern pat = Pattern.compile("(?<=\').*(?=\')");
Matcher mat = pat.matcher(str);
if (mat.find()) {
System.out.println(mat.group(0));
}
}
}
3. java正則表達式如何提取指定的標簽裡面的文本
正則判斷有的話在用string操作。
s.substring(indexOf("<p>")),可以嵌套
4. JAVA怎麼提取網頁中的指定內容
FileReader fr = new FileReader("*.htm"); FileWriter fw = new FileWriter("E:/a.txt");
char[] c = new char[1024];
StringBuffer sb = new StringBuffer();
int n;
while ((n = fr.read(c)) != -1) {
sb.append(c, 0, n);
}
fr.close();
Pattern p = Pattern.compile("<class>.*?<br>");
Matcher m = p.matcher(sb);
while (m.find()) {
String tmp = m.group();
System.out.println(tmp);
System.out.println(tmp.substring(7, tmp.length() - 4));
fw.write(tmp.substring(7, tmp.length() - 4));
}
fw.close();
5. 如何用java 提取txt文件中{}中間的內容
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileWriter;
import java.io.InputStreamReader;
import java.util.LinkedList;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class RWTXT {
public static String readTxtFile(String filePath, String pattern) {
StringBuffer str=new StringBuffer();
Pattern p;
Matcher m;
try {
String encoding = "GBK";
File file = new File(filePath);
if (file.isFile() && file.exists()) { // 判斷文件是否存在
InputStreamReader read = new InputStreamReader(
new FileInputStream(file), encoding);// 考慮到編碼格式
BufferedReader bufferedReader = new BufferedReader(read);
String lineTxt = null;
if (pattern != null) {
while ((lineTxt = bufferedReader.readLine()) != null) {
// System.out.println(lineTxt);
p = Pattern.compile(pattern);
m = p.matcher(lineTxt);
if (m.find()) {
str.append(m.group(1)+"\r\n");
}
}
}
read.close();
} else {
System.out.println("找不到指定的文件");
}
} catch (Exception e) {
System.out.println("讀取文件內容出錯");
e.printStackTrace();
}
return str.toString();
}
public static void writeFile(String str, String savePath) throws Exception {
BufferedWriter bw = new BufferedWriter(new FileWriter(savePath));
bw.write(str);
bw.close();
}
public static void main(String[] args) throws Exception {
// TODO Auto-generated method stub
String filePath = "d:\\1.txt";
// "res/";
String readTxt = readTxtFile(filePath, "\\{(.*)\\}");
System.out.println(readTxt);
writeFile(readTxt,"d:\\2.txt");
}
}