就像是:
var jsonString = '{ "Id": 1, "Name": "Coke" }';
//should be true
IsJsonString(jsonString);
//should be false
IsJsonString("foo");
IsJsonString("<div>foo</div>")
Run Code Online (Sandbox Code Playgroud)
解决方案不应包含try/catch.我们中的一些人打开"中断所有错误",他们不喜欢调试器打破那些无效的JSON字符串.
简单的正则表达式问题.我有一个以下格式的字符串:
this is a [sample] string with [some] special words. [another one]
Run Code Online (Sandbox Code Playgroud)
提取方括号内的单词的正则表达式是什么,即.
sample
some
another one
Run Code Online (Sandbox Code Playgroud)
注意:在我的用例中,括号不能嵌套.
是否可以编写与未出现次数的嵌套模式匹配的正则表达式?例如,当外括号内嵌有未知数量的打开/关闭括号时,正则表达式是否可以匹配开括号和右括号?
例如:
public MyMethod()
{
if (test)
{
// More { }
}
// More { }
} // End
Run Code Online (Sandbox Code Playgroud)
应该匹配:
{
if (test)
{
// More { }
}
// More { }
}
Run Code Online (Sandbox Code Playgroud) 这与正则表达式非常相关,以匹配外部括号,但是,我特别想知道如何或是否可以执行此正则表达式的递归模式?我还没有找到使用这个策略的python示例,所以认为这应该是一个有用的问题!
我已经看到 了一些 索赔 是递归的模式可以用来匹配平衡括号,但使用Python的没有例子正则表达式包(注:重不支持递归模式,你需要使用正则表达式).
一种说法是语法在b(?:m|(?R))*e哪里:
b是什么开始构造,m是什么可以发生在构造的中间,并且e是在构造的末尾可以发生的
我想在以下内容中提取外部大括号的匹配项:
"{1, {2, 3}} {4, 5}"
["1, {2, 3}", "4, 5"] # desired
Run Code Online (Sandbox Code Playgroud)
请注意,对于内括号,这很容易做到:
re.findall(r"{([^{}]*)}", "{1, {2, 3}} {4, 5}")
['2, 3', '4, 5']
Run Code Online (Sandbox Code Playgroud)
(在我的例子中,我使用的是finditer(在匹配对象上),请看这里.)
所以我曾希望以下或某些变体可行:
regex.findall(r"{(:[^{}]*|?R)}", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:[^{}]*|?R)})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*|(?R))*})", "{1, {2, 3}} {4, 5}")
regex.findall(r"({(:.*)|(?R)*})", …Run Code Online (Sandbox Code Playgroud) 在我的Python应用程序中,我需要编写一个匹配C++ for或while循环的正则表达式,该循环使用分号(;).例如,它应匹配此:
for (int i = 0; i < 10; i++);
Run Code Online (Sandbox Code Playgroud)
......但不是这个:
for (int i = 0; i < 10; i++)
Run Code Online (Sandbox Code Playgroud)
这看起来很琐事,直到您意识到开括号和右括号之间的文本可能包含其他括号,例如:
for (int i = funcA(); i < funcB(); i++);
Run Code Online (Sandbox Code Playgroud)
我正在使用python.re模块.现在我的正则表达式看起来像这样(我已经留下了我的评论,所以你可以更容易理解):
# match any line that begins with a "for" or "while" statement:
^\s*(for|while)\s*
\( # match the initial opening parenthesis
# Now make a named group 'balanced' which matches a balanced substring.
(?P<balanced>
# A balanced substring is either something that is not …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建一个.NET RegEx表达式,它将正确地平衡我的括号.我有以下RegEx表达式:
func([a-zA-Z_][a-zA-Z0-9_]*)\(.*\)
Run Code Online (Sandbox Code Playgroud)
我想要匹配的字符串是这样的:
"test -> funcPow((3),2) * (9+1)"
Run Code Online (Sandbox Code Playgroud)
应该发生什么是正则表达式应该匹配从funcPow第二个右括号到第二个右括号.它应该在第二个右括号后停止.相反,它一直匹配到最后一个右括号.RegEx将返回此:
"funcPow((3),2) * (9+1)"
Run Code Online (Sandbox Code Playgroud)
它应该返回:
"funcPow((3),2)"
Run Code Online (Sandbox Code Playgroud)
任何有关这方面的帮助将不胜感激.
StackOverflow鼓励自己回答问题,所以我决定创建这篇文章来分享我最近发现的东西.
问题:在正则表达式中匹配任意嵌套的括号组,例如Java的java.util.regex,既不支持递归也不支持平衡组.即,匹配3个外部组:
(第一第二第三)))))))
这个练习纯粹是学术性的,因为我们都知道正则表达式不应该被用来匹配这些东西,正如Q-tips不应该被用来清理耳朵一样.
在我接受的CS课程中,有一个不常规的语言示例:
{a^nb^n | n >= 0}
Run Code Online (Sandbox Code Playgroud)
我可以理解它不常规,因为没有有限状态自动机/机器可以编写验证和接受此输入,因为它缺少一个内存组件.(如果我错了,请纠正我)
关于常规语言的维基百科条目也列出了这个例子,但没有提供(数学)证明为什么它不常规.
任何人都可以启发我并为此提供证据,或者指出我太好的资源?