我正在编写一个Java实用程序,它可以帮助我生成大量数据以进行性能测试.这将是真的很酷,能够让自己的发电机吐出来匹配这个哪些事情来指定字符串正则表达式.有什么东西已经烘烤,我可以用它来做到这一点?或者是否有一个图书馆让我在那里大部分时间?
谢谢
我正在寻找类似于Redis KEYS命令所接受的匹配的glob样式模式.引用:
- h?llo匹配hello,hallo和hxllo
- h*llo匹配hllo和heeeello
- h [ae] llo匹配hello和hallo,但不匹配hillo
但是我没有匹配文本字符串,而是将模式与另一个模式匹配,所有运算符都在两端都有意义.
例如,这些模式应该在同一行中相互匹配:
prefix* prefix:extended*
*suffix *:extended:suffix
left*right left*middle*right
a*b*c a*b*d*b*c
hello* *ok
pre[ab]fix* pre[bc]fix*
Run Code Online (Sandbox Code Playgroud)
这些不应该匹配:
prefix* wrong:prefix:*
*suffix *suffix:wrong
left*right right*middle*left
pre[ab]fix* pre[xy]fix*
?*b*? bcb
Run Code Online (Sandbox Code Playgroud)
所以我想知道......
编辑:在RegEx子集上找到这个其他问题,但这与单词hello*和*ok匹配不是彼此的子集/超集的单词不完全相同,但它们相交.
所以我想从数学角度来看,这可能是用来表达的; 是否有可能确定地检查一个模式匹配的一组单词与另一个模式匹配的一组单词相交,导致非空集?
编辑:朋友@neizod绘制了这个消除表,它可以整齐地显示可能是潜在/部分解决方案:消除规则
编辑:将为那些也可以提供工作代码(使用任何语言)和测试用例证明它的人增加额外的奖励.
编辑:添加?*b*?@DanielGimenez在评论中发现的测试用例.
我正在尝试实现文本聚类算法.该算法通过用正则表达式替换它们来聚类相似的原始文本行,并聚合与每个正则表达式匹配的模式的数量,以便提供输入文本的简洁摘要,而不是显示来自输入文本的重复模式.在这次尝试中,我遇到了寻找一个正则表达式是否覆盖另一个正则表达式的需要.
假设我们关注仅约与"*"和"+"外卡,即"*"意味着一个字母的零个或多个字符的字符串,而"+"代表一个字母的1点或多个正好正则表达式.还假设字符集为ASCII.
例如:
1. AB covers AB
This is straightforward.
2. ABC* covers ABC
Because ABC* can generate: ABC, ABCC, ABCCC etc.
3. A*B+C* covers AB+C*
Because A*B+C* can generate ABBC, AABBC, AABBCC etc. which covers
all strings generated by AB+C*.
4. A+M+BC* covers AMM+B+C+M+BC*
Similar to case [3] above.
Run Code Online (Sandbox Code Playgroud)
基本上我正在寻找以下方法的有效实现,该方法告诉strA(可能包含正则表达式)是否覆盖了strB(可能包含正则表达式).请注意,还应该有一种方法可以在输入字符串strA和strB中转义正则表达式字符'*'和'+'.
C++中的方法签名:
bool isParentRegex(const string& strA, const string& strB)
Run Code Online (Sandbox Code Playgroud)
我的想法是实现需要一个递归方法,它可能有点复杂.但我很想知道我是否可以重用现有的实现而不是重新发明轮子,或者是否有任何其他直接的方法来实现它.
给定两个正则表达式,是否可以检测是否存在与它们匹配的任何可能的字符串?
例如,给定的正则表达式A和.,我可以看到这个字符串"A"匹配他们俩.这是一个简单的案例.
我的问题是针对更广泛的情况 - 给定任何两个有效的正则表达式,是否有可能明确地说是否有任何可能的字符串与两个正则表达式相匹配?假设没有要测试的输入字符串样本集.我只有正则表达式.我不一定需要生成匹配的字符串 - 我只需要确定有可能的字符串匹配两者.
将接受任何常见正则表达式规范的讨论 - .NET,Java,PERL,sed,grep等.
我正在尝试检查一个正则表达式是否覆盖Python 2.7中的另一个正则表达式。
例如,我有以下表达式:
([a-z]+\.\d+(\.\d+)?)?
Run Code Online (Sandbox Code Playgroud)
我想知道它是否包含以下表达式之一:
([a-z]+\.[0-9])? (covers)
([0-9]+\.\d+(\.\d+)?)? (does not cover)
([a-z]|[0-9])? (does not cover)
Run Code Online (Sandbox Code Playgroud)
是否可以检查一个正则表达式是否覆盖另一个正则表达式?如果可能的话,您对如何实现这一点有建议吗?
我创建了一个简单的正则表达式引擎,它支持连接,交替,闭包和char a .. z.
我代表nfa和dfa的方式是使用记录:
type state = int with sexp, compare
type alphabet = char with sexp, compare
type transaction = state * alphabet option * state with sexp, compare
type d_transaction = state * alphabet * state with sexp, compare
type state_set = State_set.t
type states_set = States_set.t
type nfa = {
states : State_set.t ;
alphabets : Alphabet_set.t ;
transactions : Transaction_set.t;
start_state : state;
final_states : State_set.t;
}
type dfa = {
d_states : State_set.t …Run Code Online (Sandbox Code Playgroud) 我有两个正则表达式。我需要确定是否有可能同时构建与这两个正则表达式匹配的给定长度的字符串。我需要算法来做到这一点。
字符串的长度不能超过20个字符。
我想在Python中比较两个正则表达式.
基本上,我需要测试一个表达式是否包含在另一个表达式中.
例如,[AB] D包含在[AB] [CD]中.或......是...... K ..包括在...... [KR] ..
我试过类似下面的东西,但它不起作用:
re.finditer(r"[AB][DF]",r"[AB]D")
re.finditer(r"[AB]D",r"[AB][CD]")
Run Code Online (Sandbox Code Playgroud)
我的表达式可以有不同的大小,但具有相同大小表达式的解决方案会很棒.
编辑
我所有的正则表达都很简单.
它们只包含"点","方形布料"和"^".
.表示"任何东西"(如真正的正则表达式中的*)
[AB]表示"A或B"
[^ P]表示"不是P"
编辑2
感谢您的回答和评论,我想我将从一个正则表达式生成所有字符串的集合,并使用第二个正则表达式测试它们.
regex ×7
algorithm ×2
python ×2
c++ ×1
data-mining ×1
java ×1
ocaml ×1
testing ×1
unit-testing ×1