相关疑难解决方法(0)

JavaScript:修剪.toPrecision()尾随零

我正在使用JavaScript创建在线计算器.

我有这个来计算:

eval(expression).toPrecision(10);
Run Code Online (Sandbox Code Playgroud)

这几乎在所有情况下都能产生正确的输出.例如

eval('456456+45646486*45646884').toPrecision(10)
// Output: "2.083619852e+15"

eval('1/0').toPrecision(10)
// Output: "Infinity"
Run Code Online (Sandbox Code Playgroud)

然而

eval('4*1').toPrecision(10)
// Output: "4.000000000"
Run Code Online (Sandbox Code Playgroud)

如何修剪尾随零同时保持良好的输出?

javascript math precision

4
推荐指数
2
解决办法
7405
查看次数

使用Ruby扫描方法捕获组不能按预期工作

我需要从多行字符串中获取一组浮点数(正数和负数).例如:-45.124, 1124.325等等

这是我做的:

text.scan(/(\+|\-)?\d+(\.\d+)?/)
Run Code Online (Sandbox Code Playgroud)

虽然它在regex101上工作正常(捕获组0匹配我需要的所有东西),但它在Ruby代码中不起作用.

任何想法为什么会发生以及如何改进?

ruby regex

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

从R中的字符串中提取数字模式

我对正则表达式比较陌生,而且我正陷入死胡同.我有一个数据框,其列如下所示:

year1
GMM14_2000_NGVA
GMM14_2001_NGVA
GMM14_2002_NGVA
...
GMM14_2014_NGVA
Run Code Online (Sandbox Code Playgroud)

我试图在字符串中间提取年份(2000,2001等).到目前为止,这是我的代码

gsub("[^0-9]","",year1))
Run Code Online (Sandbox Code Playgroud)

返回数字,但它也返回14作为字符串的一部分:

142000
142001
Run Code Online (Sandbox Code Playgroud)

有关如何从模式中排除14或如何更有效地提取年份信息的任何想法?

谢谢

regex r gsub

4
推荐指数
2
解决办法
7202
查看次数

如何限制正则表达式中的字符外观?

我遇到了一个问题,它挑战我创建二进制数的正则表达式(包含0s和1s).但是,如果二进制数仅包含最多5 1秒,则字符串应该匹配.如何限制正则表达式中的字符外观?

例子:

  • 01101101 是正确的
  • 01111100 是正确的
  • 10110011 是正确的
  • 01111110 是错的
  • 11111110 是错的

regex

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

具有非捕获字符的 python re.sub() 的意外结果

我无法理解以下输出:

import re 

re.sub(r'(?:\s)ff','fast-forward',' ff')
'fast-forward'
Run Code Online (Sandbox Code Playgroud)

根据文档:

返回通过替换 repl 替换 string 中模式的最左侧非重叠出现而获得的字符串。

那么为什么空格包含在捕获的出现中,然后被替换,因为我在它之前添加了一个非捕获标签?

我想要以下输出:

' fast-forward'
Run Code Online (Sandbox Code Playgroud)

python regex

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

在括号内捕获并按字符分割

我有这个正则表达式: {([^}]+)}

它成功捕获了括号内容,例如 hello {foo} and {bar}.

我还希望捕获由一个字符分隔的匹配内的组,例如 hello {foo:bar} and {hello:world}.

前者会{foo:bar}与群体产生匹配{foo},{bar}而后者则{hello:world}与群体{hello}和群体匹配{world}.

我不精通正则表达式,我已经试过这样:{([^}]+)(:([^}]))?}{([^}]+)(\:([^}]))?}万一:是一个特殊字符.

我需要做哪些修改才能成功?

c# regex

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

Coursera 课程 - Python 中的数据科学简介作业 1

我正在 Coursera 上学习这门课程,在做第一个作业时遇到了一些问题。任务基本上是使用正则表达式从给定文件中获取某些值。然后,该函数应输出包含这些值的字典:

example_dict = {"host":"146.204.224.152", 

                "user_name":"feest6811", 

                "time":"21/Jun/2019:15:45:24 -0700",

                "request":"POST /incentivize HTTP/1.1"} 
Run Code Online (Sandbox Code Playgroud)

这只是文件的屏幕截图。由于某些原因,如果不是直接从 Coursera 打开,该链接将不起作用。对于格式错误,我提前表示歉意。我必须指出的一件事是,在某些情况下,正如您在第一个示例中看到的那样,没有用户名。相反,使用“-”。

159.253.153.40 - - [21/Jun/2019:15:46:10 -0700] "POST /e-business HTTP/1.0" 504 19845
136.195.158.6 - feeney9464 [21/Jun/2019:15:46:11 -0700] "HEAD /open-source/markets HTTP/2.0" 204 21149 
Run Code Online (Sandbox Code Playgroud)

这就是我现在所拥有的。但是,输出为 None。我想我的模式有问题。

import re
def logs():
    
    with open("assets/logdata.txt", "r") as file:
        logdata = file.read()
    # YOUR CODE HERE
        
        pattern = """ 
        (?P<host>\w*)
        (\d+\.\d+.\d+.\d+\ )
        (?P<user_name>\w*)
        (\ -\ [a-z]+[0-9]+\ )
        (?P<time>\w*)
        (\[(.*?)\])
        (?P<request>\w*)
        (".*")
        """
        for item in re.finditer(pattern,logdata,re.VERBOSE):
       
            print(item.groupdict())
Run Code Online (Sandbox Code Playgroud)

python regex

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

仅捕获外部括号作为正则表达式中的组

我想使用正则表达式从java中的字符串中捕获日期和其他一些信息.

我将我的模式分组如下,

"( ( date_variation_1 | date_variation_2) (some_other_info) ) "
Run Code Online (Sandbox Code Playgroud)

现在,我想提取匹配的字符串,如下所示,
group0 - 整个匹配组1
- 日期
组2 - 其他一些信息

我的问题是我需要在date_variation_1,date_variation_2和some_other_info内部使用括号,这些括号也将被视为组分隔符.

有没有任何简单的解决方法,即将一些其他特殊章程定义为外部组分隔符,而不是括号?

date_variation_1:

"(((?:Monday|Tuesday|Wednesday|Thursday|Friday|Saturday|Sunday|Tues|Thur|Thurs|Sun|Mon|Tue|Wed|Thu|Fri|Sat))" // Day Of Week 1
                        + "(\\s+)"  // White Space 1
                        + "((?:[0]?[1-9]|[1][012])[-:\\/.](?:(?:[0-2]?\\d{1})|(?:[3][01]{1}))[-:\\/.](?:(?:\\d{1}\\d{1})))(?![\\d])" // MMDDYY 1
                        + "(\\s+)" // White Space 2
                        + "((?:(?:[0-1][0-9])|(?:[2][0-3])|(?:[0-9])):(?:[0-5][0-9])(?::[0-5][0-9])?(?:\\s?(?:am|AM|pm|PM))?))"; // HourMinuteSec 1
Run Code Online (Sandbox Code Playgroud)

java regex pattern-matching

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

如何在黄瓜场景中写数字

我想在黄瓜页上写一个数字。请让我知道我该怎么写这个。

场景大纲:输入无效的 URL

Given the context "Invalid URL" is open on "Market" 
  When user is on the error 404 page
  Then page not found message is displayed
Run Code Online (Sandbox Code Playgroud)

但我观察到 404 被当作参数。

cucumber cucumber-junit cucumber-java

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

Perl 将 2 个正则表达式合并为 1 个

有效的字符串应仅包含西里尔字符或拉丁字符。

\n

我使用 2 个正则表达式创建了一个工作解决方案。但是当我尝试将它们合并为 1 时,它失败了:

\n
#!/usr/bin/perl\n\nuse strict;\nuse warnings;\nuse utf8;\nuse v5.14;\nuse open ':std', ':encoding(UTF-8)';\n\nmy @data = (\n    # rus - ok\n    "\xd0\xb0\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd1\x91\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8c\xd1\x8b\xd1\x8a\xd1\x8d\xd1\x8e\xd1\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x81\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xac\xd0\xab\xd0\xaa\xd0\xad\xd0\xae\xd0\xaf",\n    # space\n    "\xd0\xb0 \xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd1\x91\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8c\xd1\x8b\xd1\x8a\xd1\x8d\xd1\x8e\xd1\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x81\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xac\xd0\xab\xd0\xaa\xd0\xad\xd0\xae\xd0\xaf",\n    # rus - latin\n    "\xd0\xb0t\xd0\xb1\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd1\x91\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8c\xd1\x8b\xd1\x8a\xd1\x8d\xd1\x8e\xd1\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x81\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xac\xd0\xab\xd0\xaa\xd0\xad\xd0\xae\xd0\xaf",\n    # digit\n    "\xd0\xb0\xd0\xb12\xd0\xb2\xd0\xb3\xd0\xb4\xd0\xb5\xd1\x91\xd0\xb6\xd0\xb7\xd0\xb8\xd0\xb9\xd0\xba\xd0\xbb\xd0\xbc\xd0\xbd\xd0\xbe\xd0\xbf\xd1\x80\xd1\x81\xd1\x82\xd1\x83\xd1\x84\xd1\x85\xd1\x86\xd1\x87\xd1\x88\xd1\x89\xd1\x8c\xd1\x8b\xd1\x8a\xd1\x8d\xd1\x8e\xd1\x8f\xd0\x90\xd0\x91\xd0\x92\xd0\x93\xd0\x94\xd0\x95\xd0\x81\xd0\x96\xd0\x97\xd0\x98\xd0\x99\xd0\x9a\xd0\x9b\xd0\x9c\xd0\x9d\xd0\x9e\xd0\x9f\xd0\xa0\xd0\xa1\xd0\xa2\xd0\xa3\xd0\xa4\xd0\xa5\xd0\xa6\xd0\xa7\xd0\xa8\xd0\xa9\xd0\xac\xd0\xab\xd0\xaa\xd0\xad\xd0\xae\xd0\xaf",\n    # latin - ok\n    "abcdefghejklmnopqrstuvwxyzABCDEFGHEJKLMNOPQRSTUVWXYZ",\n    # space\n    "a bcdefghejklmnopqrstuvwxyzABCDEFGHEJKLMNOPQRSTUVWXYZ",\n    # underscore\n    "a_bcdefghejklmnopqrstuvwxyzABCDEFGHEJKLMNOPQRSTUVWXYZ",\n    # digit\n    "a2bcdefghejklmnopqrstuvwxyzABCDEFGHEJKLMNOPQRSTUVWXYZ"\n);\n\nforeach(@data) {\n    if ($_ =~ /^[\xd0\xb0-\xd1\x8f\xd1\x91]+$/i or $_ =~ /^[a-z]+$/i) {\n        print "ok\\n";\n    }\n    else {\n        print "bad\\n";\n    }\n}\n\nprint "-------\\n";\nforeach(@data) {\n    if ($_ =~ /^(:?[\xd0\xb0-\xd1\x8f\xd1\x91]+)|(:?[a-z]+)$/i) {\n        print "ok\\n";\n    }\n    else …
Run Code Online (Sandbox Code Playgroud)

regex perl

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