当前位置:首页 » 编程软件 » 正则预编译

正则预编译

发布时间: 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等大型编辑器,都可以使用正则表达式来处理文本内容。

热点内容
单片机android 发布:2024-09-20 09:07:24 浏览:759
如何提高三星a7安卓版本 发布:2024-09-20 08:42:35 浏览:659
如何更换服务器网站 发布:2024-09-20 08:42:34 浏览:306
子弹算法 发布:2024-09-20 08:41:55 浏览:284
手机版网易我的世界服务器推荐 发布:2024-09-20 08:41:52 浏览:812
安卓x7怎么边打游戏边看视频 发布:2024-09-20 08:41:52 浏览:158
sql数据库安全 发布:2024-09-20 08:31:32 浏览:89
苹果连接id服务器出错是怎么回事 发布:2024-09-20 08:01:07 浏览:503
编程键是什么 发布:2024-09-20 07:52:47 浏览:653
学考密码重置要求的证件是什么 发布:2024-09-20 07:19:46 浏览:477