开放源码,希望大家多提意见和建议。
Linux下的安装包及源码下载地址:
http://regxstring.googlecode.com/files/regxstring_0.1.tar.gz
示例用法:
~# echo "\w{3,16}" | regxstr 10
作用为产生10个符合正则表达式“\w{3,16}”的字符串
同时提供头文件,静态库和共享库,使用方法为:
#include <iostream>
#include <regxstring.h>
using namespace std;
int main()
{
const char * expr = "\\w{3,16}";
CRegxString regxstr;
regxstr.ParseRegx(expr);
for(int i = 0;i < 10;++i)
cout<<regxstr.RandString()<<endl;
return 0;
}
链接时加入 -lregxstr 选项即可。
47 个解决方案
#1
up~~
#2
@echo off
chdir %1
start /b pythonw.exe C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\py\PyCrust.py
chdir %1
start /b pythonw.exe C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\py\PyCrust.py
#3
没装python,请教何意?
#4
有意思
#5
d
#6
正则表达式我知道,随机表达式我就不知道了
#7
最开始想做这个,是在写一个网络测试客户端的时候,想完成一个功能:
随机生成若干客户数据包,压力测试服务器的性能。由于ID不能完全一样,最好是满足一定规律的随机字符串,所以想起了用正则表达式来做。
随机生成若干客户数据包,压力测试服务器的性能。由于ID不能完全一样,最好是满足一定规律的随机字符串,所以想起了用正则表达式来做。
#8
自己顶下!
#9
····· ····
正则原来还能这样用
正则原来还能这样用
#10
马克
#11
学到很多东西,谢谢。
#12
很好很强大!
试用了一下,用下面的表示IP地址的正则表达式:
产生了下面的结果:
已加你好友!
试用了一下,用下面的表示IP地址的正则表达式:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
产生了下面的结果:
251.232.237.12
253.222.254.209
229.211.213.252
230.253.202.220
074.6.255.253
82.255.223.252
210.214.238.244
066.229.245.05
46.252.250.242
250.0.209.251
已加你好友!
#13
只要大家觉得有用,就行了
#14
有想法,收藏,谢谢LZ~
#15
真的很强大 在VS中运行正常 可我想在Java中引用一下 用了JNI 却有如下的提示:
/dll
/implib:regexGenerate.lib
/out:regexGenerate.dll
regexGenerate.obj
正在创建库 regexGenerate.lib 和对象 regexGenerate.exp
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CRegxS
tring::~CRegxString(void)" (??1CRegxString@@QAE@XZ),该符号在函数 _Java_wsdlpars
er_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: char const * __th
iscall CRegxString::RandString(void)" (?RandString@CRegxString@@QAEPBDXZ),该符
号在函数 _Java_wsdlparser_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall C
RegxString::ParseRegx(char const *,struct Config const *)" (?ParseRegx@CRegxStri
ng@@QAEXPBDPBUConfig@@@Z),该符号在函数 _Java_wsdlparser_parser_RegexStringGener
ate_regexGenerate@12 中被引用
regexGenerate.dll : fatal error LNK1120: 3 个无法解析的外部命令
请问您能看得出来是哪的问题么?
/dll
/implib:regexGenerate.lib
/out:regexGenerate.dll
regexGenerate.obj
正在创建库 regexGenerate.lib 和对象 regexGenerate.exp
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CRegxS
tring::~CRegxString(void)" (??1CRegxString@@QAE@XZ),该符号在函数 _Java_wsdlpars
er_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: char const * __th
iscall CRegxString::RandString(void)" (?RandString@CRegxString@@QAEPBDXZ),该符
号在函数 _Java_wsdlparser_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall C
RegxString::ParseRegx(char const *,struct Config const *)" (?ParseRegx@CRegxStri
ng@@QAEXPBDPBUConfig@@@Z),该符号在函数 _Java_wsdlparser_parser_RegexStringGener
ate_regexGenerate@12 中被引用
regexGenerate.dll : fatal error LNK1120: 3 个无法解析的外部命令
请问您能看得出来是哪的问题么?
#16
学习
学习
学习
#17
Java调用C++库的时候,是否有函数名修饰规范?感觉是这些函数的mangle机制不一致,导致函数找不到。
#18
up
#19
很好的创意!
#20
希望大家能多多试用,如果能提出问题或改进建议,更是感激不尽!
#21
这个不错,收藏下。
LZ很有创意啊
LZ很有创意啊
#22
顶一个
#23
请问,怎样在windows下的VS环境里编译的,谢谢
#24
我是在VS2008下编写的,直接就可以编译运行。
如果你用的是其他版本的VS,直接新建工程,将源代码加入工程应该就可以了。
如果出现编译错误,请贴出来,谢谢!
#25
真的是一个很好很好的想法,我在做一个软件测试的项目,遇到string的话要随机生成字符串,正好也想写一个相同的东西,楼主真是太棒了!
只是在visual studio2010编译regxstring.cpp的时候会报错,如下:
=================================================================================
1>ClCompile:
1> regxstring_impl.cpp
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2440: “初始化”: 无法从“int”转换为“__DZ_Regx_String::__NodeBase *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(247): 参见对正在编译的函数 模板 实例化“std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Ty=int,
1> _Other1=int,
1> _Other2=char
1> ]
1> e:\projects\dos2unix\dos2unix\regxstring_impl.cpp(755): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2>::pair<int,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Other1=int,
1> _Other2=char
1> ]
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::first”: 未能初始化成员
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(166) : 参见“std::_Pair_base<_Ty1,_Ty2>::first”的声明
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1>
1>生成失败。
1>
1>已用时间 00:00:01.09
===============================================================================
不知道是怎么回事,请楼主不吝赐教~
只是在visual studio2010编译regxstring.cpp的时候会报错,如下:
=================================================================================
1>ClCompile:
1> regxstring_impl.cpp
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2440: “初始化”: 无法从“int”转换为“__DZ_Regx_String::__NodeBase *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(247): 参见对正在编译的函数 模板 实例化“std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Ty=int,
1> _Other1=int,
1> _Other2=char
1> ]
1> e:\projects\dos2unix\dos2unix\regxstring_impl.cpp(755): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2>::pair<int,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Other1=int,
1> _Other2=char
1> ]
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::first”: 未能初始化成员
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(166) : 参见“std::_Pair_base<_Ty1,_Ty2>::first”的声明
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1>
1>生成失败。
1>
1>已用时间 00:00:01.09
===============================================================================
不知道是怎么回事,请楼主不吝赐教~
#26
我也正要写这东西。。这个是随机生成的,会有重复吧?
#27
#28
编译成dll后
java调用dll时,100条有时全重复,有时只有二个不重复
有人遇到过没,要怎么解决
java调用dll时,100条有时全重复,有时只有二个不重复
有人遇到过没,要怎么解决
#29
//cpp
#include "RandomString.h"
#include "regxstring.h"
#include <math.h>
#include <stdio.h>
#include <string.h>
jstring stoJstring(JNIEnv* env, const char* pat)
{
jclass strClass = env->FindClass("Ljava/lang/String;");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
JNIEXPORT jstring JNICALL Java_RandomString_getString
(JNIEnv *env, jclass jcl, jstring s){
const char* szStr=(env)->GetStringUTFChars(s,0);//两个参数
//printf("string=[%s]",szStr);
CRegxString regxstr;
regxstr.ParseRegx(szStr);
return stoJstring(env,regxstr.RandString());
}
public class RandomString {
public static native String getString(String rex);
static {
System.loadLibrary("lib/RandomString");
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
System.out.println(getString("[01]?[0-9][:][0-5]?[0-9]|[2]?[0-3][:][0-5]?[0-9]"));
try {
Thread.sleep(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/*
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
...全重复了
*/
感觉是jni的问题,不知道要怎么解决
#30
我手上没有vs2010,不过从错误信息看,似乎是“(__NodeBase *)0”的问题,可以改为“reinterpret_cast<__NodeBase *>(0)”试试。
#31
支持!
#32
大牛,正想找这东西。十分感谢您的辛勤劳动!!
#33
Compiling...
main.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2258: illegal pure syntax, must be '= 0'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(20) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(22) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(53) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
regxstring.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.cpp(44) : fatal error C1010: unexpected end of file while looking for precompiled header directive
regxstring_impl.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(26) : warning C4005: '_OSS_OUT' : macro redefinition
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(23) : see previous definition of '_OSS_OUT'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(937) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
执行 cl.exe 时出错.
main.exe - 1 error(s), 0 warning(s)
怎么调试……用的vc6.0
main.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2258: illegal pure syntax, must be '= 0'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(20) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(22) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(53) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
regxstring.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.cpp(44) : fatal error C1010: unexpected end of file while looking for precompiled header directive
regxstring_impl.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(26) : warning C4005: '_OSS_OUT' : macro redefinition
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(23) : see previous definition of '_OSS_OUT'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(937) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
执行 cl.exe 时出错.
main.exe - 1 error(s), 0 warning(s)
怎么调试……用的vc6.0
#34
1. error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
看来vc6不支持非0的static const常量初始化,简单的改法是:
#define REPEAT_INFINITE 3
2. error C2039: 'isspace' : is not a member of 'std'
应该是vc6没把isspace函数放在namespace std里,只能找找在哪里,修改一下了。
3. error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
呃~,如果是我,我就换个编译器。
后面的错误我也看不出来什么原因,不过引用别人的一句话:
珍惜生命,远离vc6.0
#35
下载看了一下,不错。
是否支持汉字?
是否支持汉字?
#36
能不能给一下代码的注释啊?看不懂啊……感谢你的热心回复!
#37
不支持宽字符。
#38
我想学习一下这个代码,请问从哪下手?
#39
可以先看doc文档,从算法开始理解。
#40
我看了doc文档了,但是文档没有写程序的运行原理。能私聊么?你的QQ是多少?我的
QQ:35145066
QQ:35145066
#41
如果在java平台上实现 各位大神有没有实现方法呢
#42
你好!看了你的帖子,受益匪浅!希望后面有什么问题能与您交流!
#43
你好,能将dll及接口发我下么?407361892@qq.com
#44
您好,我想请问您的dll是如何生成的?需要输入正则表达式字符串,且返回满足表达式的字符串数组,另外就是您说的数据重复问题解决了吗?如果解决的话,麻烦发dll和接口说明到我邮箱好么?407361892@qq.com
#45
怒赞,准备使用下这个库
#46
((http[s]{0,1}|ftp)://[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4})(:\d+)?(/[a-zA-Z0-9\.\-~!@#$%^&*+?:_/=<>]*)?)
会生成
ftp://U.Ch/"
但不应该有双引号存在,检查发现可能是对字符^识别有问题
会生成
ftp://U.Ch/"
但不应该有双引号存在,检查发现可能是对字符^识别有问题
#47
C:\Documents and Settings\lx>echo "^kernel: CF: .*[Ff]ailed" | regxstr 2
"^kernel: CF: Failed"
"^kernel: CF: !oafailed"
windows里面怎么把"^"这个符号也输出来了?
"^kernel: CF: Failed"
"^kernel: CF: !oafailed"
windows里面怎么把"^"这个符号也输出来了?
#1
up~~
#2
@echo off
chdir %1
start /b pythonw.exe C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\py\PyCrust.py
chdir %1
start /b pythonw.exe C:\Python26\Lib\site-packages\wx-2.8-msw-unicode\wx\py\PyCrust.py
#3
没装python,请教何意?
#4
有意思
#5
d
#6
正则表达式我知道,随机表达式我就不知道了
#7
最开始想做这个,是在写一个网络测试客户端的时候,想完成一个功能:
随机生成若干客户数据包,压力测试服务器的性能。由于ID不能完全一样,最好是满足一定规律的随机字符串,所以想起了用正则表达式来做。
随机生成若干客户数据包,压力测试服务器的性能。由于ID不能完全一样,最好是满足一定规律的随机字符串,所以想起了用正则表达式来做。
#8
自己顶下!
#9
····· ····
正则原来还能这样用
正则原来还能这样用
#10
马克
#11
学到很多东西,谢谢。
#12
很好很强大!
试用了一下,用下面的表示IP地址的正则表达式:
产生了下面的结果:
已加你好友!
试用了一下,用下面的表示IP地址的正则表达式:
^(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$
产生了下面的结果:
251.232.237.12
253.222.254.209
229.211.213.252
230.253.202.220
074.6.255.253
82.255.223.252
210.214.238.244
066.229.245.05
46.252.250.242
250.0.209.251
已加你好友!
#13
只要大家觉得有用,就行了
#14
有想法,收藏,谢谢LZ~
#15
真的很强大 在VS中运行正常 可我想在Java中引用一下 用了JNI 却有如下的提示:
/dll
/implib:regexGenerate.lib
/out:regexGenerate.dll
regexGenerate.obj
正在创建库 regexGenerate.lib 和对象 regexGenerate.exp
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CRegxS
tring::~CRegxString(void)" (??1CRegxString@@QAE@XZ),该符号在函数 _Java_wsdlpars
er_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: char const * __th
iscall CRegxString::RandString(void)" (?RandString@CRegxString@@QAEPBDXZ),该符
号在函数 _Java_wsdlparser_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall C
RegxString::ParseRegx(char const *,struct Config const *)" (?ParseRegx@CRegxStri
ng@@QAEXPBDPBUConfig@@@Z),该符号在函数 _Java_wsdlparser_parser_RegexStringGener
ate_regexGenerate@12 中被引用
regexGenerate.dll : fatal error LNK1120: 3 个无法解析的外部命令
请问您能看得出来是哪的问题么?
/dll
/implib:regexGenerate.lib
/out:regexGenerate.dll
regexGenerate.obj
正在创建库 regexGenerate.lib 和对象 regexGenerate.exp
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: __thiscall CRegxS
tring::~CRegxString(void)" (??1CRegxString@@QAE@XZ),该符号在函数 _Java_wsdlpars
er_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: char const * __th
iscall CRegxString::RandString(void)" (?RandString@CRegxString@@QAEPBDXZ),该符
号在函数 _Java_wsdlparser_parser_RegexStringGenerate_regexGenerate@12 中被引用
regexGenerate.obj : error LNK2019: 无法解析的外部符号 "public: void __thiscall C
RegxString::ParseRegx(char const *,struct Config const *)" (?ParseRegx@CRegxStri
ng@@QAEXPBDPBUConfig@@@Z),该符号在函数 _Java_wsdlparser_parser_RegexStringGener
ate_regexGenerate@12 中被引用
regexGenerate.dll : fatal error LNK1120: 3 个无法解析的外部命令
请问您能看得出来是哪的问题么?
#16
学习
学习
学习
#17
Java调用C++库的时候,是否有函数名修饰规范?感觉是这些函数的mangle机制不一致,导致函数找不到。
#18
up
#19
很好的创意!
#20
希望大家能多多试用,如果能提出问题或改进建议,更是感激不尽!
#21
这个不错,收藏下。
LZ很有创意啊
LZ很有创意啊
#22
顶一个
#23
请问,怎样在windows下的VS环境里编译的,谢谢
#24
我是在VS2008下编写的,直接就可以编译运行。
如果你用的是其他版本的VS,直接新建工程,将源代码加入工程应该就可以了。
如果出现编译错误,请贴出来,谢谢!
#25
真的是一个很好很好的想法,我在做一个软件测试的项目,遇到string的话要随机生成字符串,正好也想写一个相同的东西,楼主真是太棒了!
只是在visual studio2010编译regxstring.cpp的时候会报错,如下:
=================================================================================
1>ClCompile:
1> regxstring_impl.cpp
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2440: “初始化”: 无法从“int”转换为“__DZ_Regx_String::__NodeBase *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(247): 参见对正在编译的函数 模板 实例化“std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Ty=int,
1> _Other1=int,
1> _Other2=char
1> ]
1> e:\projects\dos2unix\dos2unix\regxstring_impl.cpp(755): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2>::pair<int,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Other1=int,
1> _Other2=char
1> ]
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::first”: 未能初始化成员
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(166) : 参见“std::_Pair_base<_Ty1,_Ty2>::first”的声明
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1>
1>生成失败。
1>
1>已用时间 00:00:01.09
===============================================================================
不知道是怎么回事,请楼主不吝赐教~
只是在visual studio2010编译regxstring.cpp的时候会报错,如下:
=================================================================================
1>ClCompile:
1> regxstring_impl.cpp
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2440: “初始化”: 无法从“int”转换为“__DZ_Regx_String::__NodeBase *”
1> 从整型转换为指针类型要求 reinterpret_cast、C 样式转换或函数样式转换
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(247): 参见对正在编译的函数 模板 实例化“std::_Pair_base<_Ty1,_Ty2>::_Pair_base<_Ty,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Ty=int,
1> _Other1=int,
1> _Other2=char
1> ]
1> e:\projects\dos2unix\dos2unix\regxstring_impl.cpp(755): 参见对正在编译的函数 模板 实例化“std::pair<_Ty1,_Ty2>::pair<int,char>(_Other1 &&,_Other2 &&)”的引用
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int,
1> _Other1=int,
1> _Other2=char
1> ]
1>d:\program files\microsoft visual studio 10.0\vc\include\utility(163): error C2439: “std::_Pair_base<_Ty1,_Ty2>::first”: 未能初始化成员
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1> d:\program files\microsoft visual studio 10.0\vc\include\utility(166) : 参见“std::_Pair_base<_Ty1,_Ty2>::first”的声明
1> with
1> [
1> _Ty1=__DZ_Regx_String::__NodeBase *,
1> _Ty2=int
1> ]
1>
1>生成失败。
1>
1>已用时间 00:00:01.09
===============================================================================
不知道是怎么回事,请楼主不吝赐教~
#26
我也正要写这东西。。这个是随机生成的,会有重复吧?
#27
#28
编译成dll后
java调用dll时,100条有时全重复,有时只有二个不重复
有人遇到过没,要怎么解决
java调用dll时,100条有时全重复,有时只有二个不重复
有人遇到过没,要怎么解决
#29
//cpp
#include "RandomString.h"
#include "regxstring.h"
#include <math.h>
#include <stdio.h>
#include <string.h>
jstring stoJstring(JNIEnv* env, const char* pat)
{
jclass strClass = env->FindClass("Ljava/lang/String;");
jmethodID ctorID = env->GetMethodID(strClass, "<init>", "([BLjava/lang/String;)V");
jbyteArray bytes = env->NewByteArray(strlen(pat));
env->SetByteArrayRegion(bytes, 0, strlen(pat), (jbyte*)pat);
jstring encoding = env->NewStringUTF("utf-8");
return (jstring)env->NewObject(strClass, ctorID, bytes, encoding);
}
JNIEXPORT jstring JNICALL Java_RandomString_getString
(JNIEnv *env, jclass jcl, jstring s){
const char* szStr=(env)->GetStringUTFChars(s,0);//两个参数
//printf("string=[%s]",szStr);
CRegxString regxstr;
regxstr.ParseRegx(szStr);
return stoJstring(env,regxstr.RandString());
}
public class RandomString {
public static native String getString(String rex);
static {
System.loadLibrary("lib/RandomString");
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++)
System.out.println(getString("[01]?[0-9][:][0-5]?[0-9]|[2]?[0-3][:][0-5]?[0-9]"));
try {
Thread.sleep(0);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
/*
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
3:07
...全重复了
*/
感觉是jni的问题,不知道要怎么解决
#30
我手上没有vs2010,不过从错误信息看,似乎是“(__NodeBase *)0”的问题,可以改为“reinterpret_cast<__NodeBase *>(0)”试试。
#31
支持!
#32
大牛,正想找这东西。十分感谢您的辛勤劳动!!
#33
Compiling...
main.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2258: illegal pure syntax, must be '= 0'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(20) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(22) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(53) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
regxstring.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.cpp(44) : fatal error C1010: unexpected end of file while looking for precompiled header directive
regxstring_impl.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(26) : warning C4005: '_OSS_OUT' : macro redefinition
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(23) : see previous definition of '_OSS_OUT'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(937) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
执行 cl.exe 时出错.
main.exe - 1 error(s), 0 warning(s)
怎么调试……用的vc6.0
main.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2258: illegal pure syntax, must be '= 0'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.h(10) : error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(20) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(22) : error C2039: 'isspace' : is not a member of 'std'
C:\Documents and Settings\Administrator\My Documents\VC6.0\main\main.cpp(53) : error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
regxstring.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring.cpp(44) : fatal error C1010: unexpected end of file while looking for precompiled header directive
regxstring_impl.cpp
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(26) : warning C4005: '_OSS_OUT' : macro redefinition
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(23) : see previous definition of '_OSS_OUT'
c:\documents and settings\administrator\my documents\vc6.0\main\regxstring_impl.cpp(937) : fatal error C1010: unexpected end of file while looking for precompiled header directive
Generating Code...
执行 cl.exe 时出错.
main.exe - 1 error(s), 0 warning(s)
怎么调试……用的vc6.0
#34
1. error C2252: 'REPEAT_INFINITE' : pure specifier can only be specified for functions
看来vc6不支持非0的static const常量初始化,简单的改法是:
#define REPEAT_INFINITE 3
2. error C2039: 'isspace' : is not a member of 'std'
应该是vc6没把isspace函数放在namespace std里,只能找找在哪里,修改一下了。
3. error C2039: 'push_back' : is not a member of 'basic_string<char,struct std::char_traits<char>,class std::allocator<char> >'
呃~,如果是我,我就换个编译器。
后面的错误我也看不出来什么原因,不过引用别人的一句话:
珍惜生命,远离vc6.0
#35
下载看了一下,不错。
是否支持汉字?
是否支持汉字?
#36
能不能给一下代码的注释啊?看不懂啊……感谢你的热心回复!
#37
不支持宽字符。
#38
我想学习一下这个代码,请问从哪下手?
#39
可以先看doc文档,从算法开始理解。
#40
我看了doc文档了,但是文档没有写程序的运行原理。能私聊么?你的QQ是多少?我的
QQ:35145066
QQ:35145066
#41
如果在java平台上实现 各位大神有没有实现方法呢
#42
你好!看了你的帖子,受益匪浅!希望后面有什么问题能与您交流!
#43
你好,能将dll及接口发我下么?407361892@qq.com
#44
您好,我想请问您的dll是如何生成的?需要输入正则表达式字符串,且返回满足表达式的字符串数组,另外就是您说的数据重复问题解决了吗?如果解决的话,麻烦发dll和接口说明到我邮箱好么?407361892@qq.com
#45
怒赞,准备使用下这个库
#46
((http[s]{0,1}|ftp)://[a-zA-Z0-9\.\-]+\.([a-zA-Z]{2,4})(:\d+)?(/[a-zA-Z0-9\.\-~!@#$%^&*+?:_/=<>]*)?)
会生成
ftp://U.Ch/"
但不应该有双引号存在,检查发现可能是对字符^识别有问题
会生成
ftp://U.Ch/"
但不应该有双引号存在,检查发现可能是对字符^识别有问题
#47
C:\Documents and Settings\lx>echo "^kernel: CF: .*[Ff]ailed" | regxstr 2
"^kernel: CF: Failed"
"^kernel: CF: !oafailed"
windows里面怎么把"^"这个符号也输出来了?
"^kernel: CF: Failed"
"^kernel: CF: !oafailed"
windows里面怎么把"^"这个符号也输出来了?