相关疑难解决方法(0)

(?:x)字符有什么意义?

可能重复:
非捕获组?

我正在学习JavaScript中的正则表达式,而(?:x)字符或"非捕获括号"对我来说没有意义.如果你不想记住这场比赛,为什么不完全放弃括号呢?使用/(?:x)/而不仅仅是优势是什么/x/

javascript regex

1
推荐指数
1
解决办法
1343
查看次数

perl regex匹配""(字符串)语法

我是Perl和regex的新手,我需要从文本文件中提取所有字符串.字符串由双引号包装的任何内容标识.

字符串示例:

"This is string"
"1!=2"
"This is \"string\""
"string1"."string2"
"S
t
r
i
n
g"
Run Code Online (Sandbox Code Playgroud)

代码:

my $fh;

open($fh,'<','text.txt') or die "$!";

undef $/;
my $text = <$fh>;

my @strings = m/".*"/g; # this returns the most out "" in example 4
my @strings2 = m/"[^"]*"/g #fixed the above issue but does not take in example 3
Run Code Online (Sandbox Code Playgroud)

编辑:我想获得(1)双引号,然后是(2)零次或多次出现非双引号 - 非反斜杠或反斜杠后跟任何字符,接着是(3)双引号.(2)可以是任何东西,但"

下面提供的正则表达式是m /"(?:\.| [^"])*"/ g但是当它有一条线"string1".string2."string2"时会返回"string1" string2 "string3"

有没有可以跳过之前匹配的单词?

有人可以帮忙吗?

regex string perl

0
推荐指数
1
解决办法
206
查看次数

python re?:示例

(?= (?:\d{5}|[A-Z]{2}))在python re示例中看到了一个正则表达式,并对的含义感到非常困惑?:

我也看到了python doc,有解释:

(?:...)

非捕获版本的常规括号。匹配括号内的任何正则表达式,但是在执行匹配后或在模式中稍后引用后,无法检索到与该组匹配的子字符串。

谁能给我一个例子,并解释它为什么起作用,谢谢!

python regex

0
推荐指数
2
解决办法
5403
查看次数

Java使用正则表达式提取文本

我试图使用Java正则表达式从以下字符串中提取粗体子字符串:

音乐作品| 与| 作曲家| James Hetfield(音乐家)

我开始使用此代码,但这不起作用.我不确定我错过了什么:

final Pattern pattern = Pattern.compile("| (.+?) (musician)");
final Matcher matcher = pattern.matcher("music works | with | composer | James Hetfield (musician)");
matcher.find();
System.out.println(matcher.group(1)); // Prints String I want to extract
Run Code Online (Sandbox Code Playgroud)

思考?

java regex

0
推荐指数
1
解决办法
349
查看次数

Java正则表达式返回完整字符串而不是捕获

Java代码:

String imagesArrayResponse = xmlNode.getChildText("files");
Matcher m = Pattern.compile("path\":\"([^\"]*)").matcher(imagesArrayResponse);

while (m.find()) {
    String path = m.group(0);
}
Run Code Online (Sandbox Code Playgroud)

串:

[{"path":"upload\/files\/56727570aaa08922_0.png","dir":"files","name":"56727570aaa08922_0","original_name":"56727570aaa08922_0.png"}{"path":"upload\/files\/56727570aaa08922_0.png","dir":"files","name":"56727570aaa08922_0","original_name":"56727570aaa08922_0.png"}{"path":"upload\/files\/56727570aaa08922_0.png","dir":"files","name":"56727570aaa08922_0","original_name":"56727570aaa08922_0.png"}{"path":"upload\/files\/56727570aaa08922_0.png","dir":"files","name":"56727570aaa08922_0","original_name":"56727570aaa08922_0.png"}]
Run Code Online (Sandbox Code Playgroud)

m.group退货

path":"upload\/files\/56727570aaa08922_0.png"
Run Code Online (Sandbox Code Playgroud)

而不是路径的捕获​​值。我哪里错了?

java regex

0
推荐指数
1
解决办法
87
查看次数

使用正则表达式查找字符串中的第一个单词和最后几个单词

使用这两个正则表达式regPrefixregSuffix,

final String POEM = "1. Twas brillig, and the slithy toves\n" + 
                    "2. Did gyre and gimble in the wabe.\n" +
                    "3. All mimsy were the borogoves,\n" + 
                    "4. And the mome raths outgrabe.\n\n";

String regPrefix = "(?m)^(\\S+)";   // for the first word in each line.
String regSuffix = "(?m)\\S+\\s+\\S+\\s+\\S+$";  // for the last 3 words in each line.
Matcher m1 = Pattern.compile(regPrefix).matcher(POEM);
Matcher m2 = Pattern.compile(regSuffix).matcher(POEM);

while (m1.find() && m2.find()) {
    System.out.println(m1.group() + " …
Run Code Online (Sandbox Code Playgroud)

java regex string

0
推荐指数
1
解决办法
49
查看次数

Python正则表达式提取电话号码

我想清理我的熊猫数据框中的电话号码列。我正在使用下面的代码,但它在最后留下了一个括号。我如何获得正确的正则表达式以排除任何额外的字符,例如 ( 或任何不属于电话号码的内容。我已经浏览了旧帖子,但似乎无法找到确切的解决方案。下面的示例代码:

import pandas as pd
df1 = pd.DataFrame({'x': ['1234567890', '202-456-3456', '(202)-456-3456adsd', '(202)-456- 4567', '1234564567(dads)']})
df1['x1'] = df1['x'].str.extract('([\(\)\s\d\-]+)',expand= True) 

expected output:
                    x               x1
0          1234567890       1234567890
1        202-456-3456     202-456-3456
2  (202)-456-3456adsd   (202)-456-3456
3     (202)-456- 4567  (202)-456- 4567
4    1234564567(dads)      1234564567

Current output :
                    x               x1
0          1234567890       1234567890
1        202-456-3456     202-456-3456
2  (202)-456-3456adsd   (202)-456-3456
3     (202)-456- 4567  (202)-456- 4567
4    1234564567(dads)      1234564567(

Run Code Online (Sandbox Code Playgroud)

regex pandas

0
推荐指数
1
解决办法
378
查看次数

正则表达式:我在使用'|'时遇到问题

text = "a/NNP b/NNG c/NP d/NNP e/PNG" 
Run Code Online (Sandbox Code Playgroud)

我想用'NNP'和'NNG'标签取出单词.

所以我尝试过:

words = re.compile('(\w+/[(NNP)|(NNG)]*)')
t = re.findall(words,text)
Run Code Online (Sandbox Code Playgroud)

但是,结果一直在向我展示

['a/NNP', 'b/NNG', 'c/NP', 'd/NNP','e/PNG'].
How can I get only ['a/NNP','b/NNG','d/NNP']?
Run Code Online (Sandbox Code Playgroud)

python regex

-1
推荐指数
1
解决办法
58
查看次数

Java正则表达式:AZ和-或_,但只能出现一次

我只涉足正则表达式,想知道是否有人可以帮助我制作一个 Java 正则表达式,它与具有以下特性的字符串相匹配:

  1. 长度为1-14个字符
  2. 它仅由 AZ、az 和字母 _ 或 - 组成
  3. 符号 - 和 _ 只能(一起)包含一次,并且不能出现在开头

它应该匹配

  • 再一次问好
  • 这是有效的
  • 还有这个_

但不是

  • -无效
  • 不允许这样做
  • Nor-This_thing
  • 确实非常非常长的字符串

我尝试过以下正则表达式字符串

[a-zA-Z^\\-_]+[\\-_]?[a-zA-Z^\\-_]*
Run Code Online (Sandbox Code Playgroud)

这似乎有效。但是,我不确定如何用这种方法来完成总字符限制部分。我也尝试过

[[a-zA-Z]+[\\-_]?[a-zA-Z]*]{1,14}
Run Code Online (Sandbox Code Playgroud)

但它匹配(例如) abc-cde_aa ,但它不应该匹配。

java regex

-2
推荐指数
1
解决办法
1791
查看次数

如何同时删除括号和括号内带有空白的文本(如果存在)?

我正在尝试使用以下代码在PHP中清除字符串,但是我不确定如何在使用空格之前同时删除括号和括号内的文本。

我使用的代码是:

$string = "Deadpool 2 [Region 4](Blu-ray)";
echo preg_replace("/\[[^)]+\]/","",$string); 
Run Code Online (Sandbox Code Playgroud)

我得到的输出是:

Deadpool [](Blu-ray)
Run Code Online (Sandbox Code Playgroud)

但是,所需的输出是:

Deadpool 2
Run Code Online (Sandbox Code Playgroud)

使用来自解决方案这个这个问题,目前还不清楚如何删除这两个一个类型匹配,另一个同时在他们面前卸下可选空白。

php regex

-2
推荐指数
1
解决办法
360
查看次数

标签 统计

regex ×10

java ×4

python ×2

string ×2

javascript ×1

pandas ×1

perl ×1

php ×1