我需要2个简单的reg exps:
[]
例如[word]
)""
例如"word"
)答案 0 :(得分:13)
\[\w+\]
"\w+"
的说明:强>
\ [和\]转义特殊括号字符以匹配其文字。
\ w表示“任何单词字符”,通常被认为与字母数字或下划线相同。
+表示前一项中的一项或多项。
“是文字字符。
注意:如果您想确保整个字符串匹配(而不仅仅是其中的一部分),请使用^
作为前缀,并使用$
作为后缀。
下次,您应该可以通过阅读 regular-expressions.info
自行回答这个问题。<强>更新强>
好的,基于你的评论,你似乎想知道的是第一个字符是[和最后一个]还是第一个和最后一个都是“?” 如果是这样,这些将匹配:
^\[.*\]$ (or ^\\[.*\\]$ in a Java String)
"^.*$"
但是,除非您需要对中心字符进行一些特殊检查,否则只需执行以下操作:
if ( MyString.startsWith("[") && MyString.endsWith("]") )
和
if ( MyString.startsWith("\"") && MyString.endsWith("\"") )
我怀疑它会比正则表达式更快。</ p>
答案 1 :(得分:2)
可能使正则表达式中难以/不可能的重要问题:
可[]
嵌套(例如[foo [bar]]
)吗?如果是这样,那么传统的正则表达式无法帮助你。 Perl的扩展正则表达式可以,但编写解析器可能更好。
[
,]
或"
可以在字符串中转义(例如"foo said \"bar\""
)吗?如果是,请参阅How can I match double-quoted strings with escaped double-quote characters?
在匹配的字符串中是否可以有多个这样的实例?如果是这样,您可能希望使用非贪婪量词修饰符(即?
)来获取匹配的最小字符串:/(".*?"|\[.*?\])/g
根据评论,您似乎希望匹配"this is a "long" word"
#!/usr/bin/perl
use strict;
use warnings;
my $s = 'The non-string "this is a crazy "string"" is bad (has own delimiter)';
print $s =~ /^.*?(".*").*?$/, "\n";
答案 2 :(得分:0)
它们是两个独立的表达方式吗?
[[A-ZA-Z] +]
\ “[A-ZA-Z] + \”
如果它们只是一个表达式:
[[\ “] + [A-ZA-Z] + [] \”] +
请记住,在.net中,您需要使用双引号“by”“