當前位置:首頁 » 編程軟體 » 正則預編譯

正則預編譯

發布時間: 2022-01-13 02:40:55

⑴ 在java中如何實現預編譯

/*
* ProCompile.java *預處理要編譯的文件,刪除多餘的空白,注釋,換行,回車等
* Created on 2007年9月18日, 下午8:58 */ package javacompile; import java.io.*;
import java.util.regex.*;
import javax.swing.JOptionPane; /** * @com.junjian.sun public class PerCompile { File f = null;
String fileString = null;
Pattern p = null;
Matcher m = null;
String regex; //正則表達式 //初始化p
public PerCompile() {
regex ="(//.+)" + //(//.+) 對應單行注釋
//"|(/\\*(.+\\n)+\\*/)"+ // 想對應多行注釋... "|(\\r\\n)" + "|(\\n)"+//(\\r\\n)|(\\n)對應換行
"|(\\B\\s+)" ; // 空白符
String ss;
f = new File(new JOptionPane()
.showInputDialog("請輸入文件所在路徑~"));
try {
BufferedReader bf = new BufferedReader(new FileReader(f));
ss = bf.readLine()+"\n";
fileString = ss; //如果沒有這兩句,ss的開頭會有「null」
while((ss = bf.readLine())!= null){
fileString += ss+"\n"; bf.close();
} catch (IOException ex) {
ex.printStackTrace(); p = Pattern.compile(regex);
m = p.matcher(fileString); //執行替換所有多餘空行,空白符,注釋
void Dels(){
System.out.println("before: "+fileString);
if(m.find()) System.out.println("find!!");
System.out.println(m.replaceAll("")); } }

-

c語言 正則庫 pcre 教程 (windows環境)

1、編譯PCRE正則表達式庫

(1) (MinGW + MSYS)

將PCRE源碼包直接拷貝到MSYS目錄下,(如:C:\MSYS\1.0\pcre\)

運行msys.bat啟動MSYS,

在命令行輸入

cd / // 回根目錄

cd pcre // 進入PCRE目錄

./configure // 配置編譯

make // 編譯全部

完成後,會在C:\MSYS\1.0\pcre\.libs\ 下生成所需要的文件:

libpcre-0.dll // PCRE的動態鏈接庫

libpcre.dll.a // 調用PCRE動態鏈接庫所用的LIB

libpcre.a // PCRE靜態鏈接庫

再配合上C:\MSYS\1.0\pcre\目錄下的"pcre.h",就可以在程序中加入正則表達式支持了:)

(2) (於windows平台手動編譯pcre,轉載)

將 config.h.generic 重命名為 config.h
設置其中的 HAVE_BCOPY 參數為 0 (因為windows平台無b()函數)
重命名 pcre.h.generic 為 pcre.h.
重命名 pcre_chartables.c.dist 為 pcre_chartables.c.
編譯 dftables.c 成可執行文件,要加入參數 -DHAVE_CONFIG_H,以便導入 config.h 文件中的設置
/* 重命名 pcre_chartables.c.dist 為 pcre_chartables.c */
運行編譯的可執行文件 dftables.exe ,參數為 pcre_chartables.c
即 dftables.exe pcre_chartables.c
新建工程,包含下列文件,編譯成lib文件即可
pcre_internal.h
ucp.h
ucpinternal.h
ucptable.h
pcre_chartables.c
pcre_compile.c
pcre_config.c
pcre_dfa_exec.c
pcre_exec.c
pcre_fullinfo.c
pcre_get.c
pcre_globals.c
pcre_info.c
pcre_maketables.c
pcre_newline.c
pcre_ord2utf8.c
pcre_refcount.c
pcre_study.c
pcre_tables.c
pcre_try_flipped.c
pcre_ucp_searchfuncs.c
pcre_valid_utf8.c
pcre_version.c
pcre_xclass.c

這樣就可以生成 libpcre.a 文件了 (vc,bcc生成的是pcre.lib,大同小異)

2、使用生成的 libpcre.a (靜態鏈接庫)

在你的程序中添加:

#define PCRE_STATIC // 開啟靜態鏈接庫支持(一定要添加該行,否則無法使用靜態鏈接庫)
#include "pcre.h" // PCRE頭文件
並且添加 libpcre.a 到工程中,然後就可以在程序中使用PCRE函數了:)

編譯選項 添加 /MT ,無頭文件預編譯.

3、使用生成的 libpcre-0.dll 和 libpcre.dll.a (動態鏈接庫)

在你的程序中添加:

#include "pcre.h" // PCRE頭文件

並且添加 libpcre.dll.a 到工程中,然後就可以在程序中使用PCRE函數了:)

================================================================================

命令行下的批處理解決方法 .如果已經下載,可以不用第一行.

goto START

首先確保控制台環境中有:
1、VC6命令行編譯環境
2、wget.exe、unzip.exe、sed.exe、mv.exe
然後執行這個批處理文件,就可以得到VC版本的pcr.lib。

:START
wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-7.7.zip
unzip pcre-7.7.zip
cd pcre-7.7
sed -e "s/#define HAVE_BCOPY 1/#define HAVE_BCOPY 0/g" config.h.generic > config.h
mv pcre.h.generic pcre.h
mv pcre_chartables.c.dist pcre_chartables.c
cl -MD -DHAVE_CONFIG_H dftables.c
dftables.exe pcre_chartables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_chartables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_compile.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_config.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_dfa_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_exec.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_fullinfo.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_get.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_globals.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_info.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_maketables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_newline.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ord2utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_refcount.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_study.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_tables.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_try_flipped.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_ucp_searchfuncs.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_valid_utf8.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_version.c
cl -O1 -MD -DHAVE_CONFIG_H -c pcre_xclass.c
lib -out:libpcr.lib pcre_chartables.obj pcre_compile.obj pcre_config.obj pcre_dfa_exec.obj pcre_exec.obj pcre_fullinfo.obj pcre_get.obj pcre_globals.obj pcre_info.obj pcre_maketables.obj pcre_newline.obj pcre_ord2utf8.obj pcre_refcount.obj pcre_study.obj pcre_tables.obj pcre_try_flipped.obj pcre_ucp_searchfuncs.obj pcre_valid_utf8.obj pcre_version.obj pcre_xclass.obj

這樣就出來了: pcre.h + libpcr.lib

==============================================================================

最近使用VC編譯了一下她的源代碼,其實步驟很簡單, 如下

1 一些源文件改名
config.h.generic 改名為 config.h (注意裡面的配置)
pcre.h.generic 改名為 pcre.h
pcre_chartables.c.dist 改名為 pcre_chartables.c

2 建立VC工程
建立一個VC的DLL工程,去掉原有的包含文件
將PCRE的所有pcre_*.c都加進去, pcre後面沒有_的不要加, 後綴名是.cc的不要加
可以參考上面的.還有.h 文件也是要的.

3 修改工程設置

增加工程預編譯宏 HAVE_CONFIG_H
不使用預編譯頭 Not Using Precompiled Headers
編譯選項 添加 /MT

OK 完成以上三步,就可以在 VC 上編譯通過了。

4 編譯結果
使用時只需要編譯出來的 .DLL .Lib 和 源代碼目錄的 pcre.h

⑶ 正則表達式中/i,/g,/ig,/gi,/m的區別和含義

/i忽略大小寫的功能,是不能單獨使用的。

/g在全文中查找所出現的指定字元串。

/ig忽略大小寫在全文中查找指定字元串。

/gi/gi和/ig作用是一樣的,都是忽略大小寫在全文中查找指定字元串。

/m多行查找


正則表達式的通項: /pattern/flags 即(/模式/標記 )

構造器函數方法使用方法如下:

new RegExp("pattern"[, "flags"])(即new RegExp("模式"[,"標記"]))

pattern(模式)表示正則表達式的文本

flags(標記):如果指定此項,flags可以是下面值之一:

g: global match(全定匹配)i: ignore case(忽略大小寫)gi: both global match and ignore case(匹配所有可能的值,也忽略大小寫)

表達式建立同樣的正則表達式例如:

/ab+c/gi

(3)正則預編譯擴展閱讀:

特點

正則表達式的特點是:

1、靈活性、邏輯性和功能性非常強;

2、可以迅速地用極簡單的方式達到字元串的復雜控制。

3、對於剛接觸的人來說,比較晦澀難懂。

由於正則表達式主要應用對象是文本,因此它在各種文本編輯器場合都有應用,小到著名編輯器EditPlus,大到Microsoft Word、Visual Studio等大型編輯器,都可以使用正則表達式來處理文本內容。

熱點內容
php之道 發布:2024-11-10 13:50:45 瀏覽:790
n的階乘c語言程序 發布:2024-11-10 13:50:45 瀏覽:512
伺服器電腦是主機嗎 發布:2024-11-10 13:50:41 瀏覽:284
wifi怎麼更改賬號密碼 發布:2024-11-10 13:41:58 瀏覽:818
c語言編程學習什麼 發布:2024-11-10 13:40:37 瀏覽:908
紅米手機屏鎖密碼忘了怎麼辦 發布:2024-11-10 13:32:43 瀏覽:28
matlab能編譯udf嗎 發布:2024-11-10 13:31:53 瀏覽:604
生成器表達式python 發布:2024-11-10 13:31:49 瀏覽:462
java路徑在哪 發布:2024-11-10 13:31:47 瀏覽:374
centos怎麼配置kafkaphp 發布:2024-11-10 13:30:45 瀏覽:263