GVKun编程网logo

如何使用新行正则expression式使用findstr(正则表达式 行尾)

21

对于想了解如何使用新行正则expression式使用findstr的读者,本文将是一篇不可错过的文章,我们将详细介绍正则表达式行尾,并且为您提供关于Bash的正则expression式不接受斜杠、C#

对于想了解如何使用新行正则expression式使用findstr的读者,本文将是一篇不可错过的文章,我们将详细介绍正则表达式 行尾,并且为您提供关于Bash的正则expression式不接受斜杠、C# – 与if语句使用正则expression式、C# – 使用正则expression式与TextBox.Validating、C# – 文件path的正则expression式,例如C: test test.exe的有价值信息。

本文目录一览:

如何使用新行正则expression式使用findstr(正则表达式 行尾)

如何使用新行正则expression式使用findstr(正则表达式 行尾)

我在Windows DOS提示符。 我有日志文件,其中包含日志如下:

Timestamp: Order received for Item No. 26551 Timestamp: Exception: OutOfRangeException Timestamp: Message: Inventory Item is not stock. Item No. 23423 Timestamp: Order received for Item No. 23341

我想提取所有产生某种例外的项目号码。 我正在使用findstr命令。 我怎样才能在我的正则expression式中使用换行符? 我想所有的行有exception字,从下一行的项目号。

任何帮助?

如何根据开始和结束位置来查找和replacestring

删除报价周围的数字

Bash脚本正则expression式

从命令响应中提取数据并将其存储在variables中

正则expression式在awk和WinGrep中

perl – 提取string列表

grepexception但排除特定的exception

用户指定replacestring的sedreplace

Nginx的request_uri没有参数

为什么这个正则expression式匹配返回一个散列表?

我发现了一个未公开的功能 – FINDSTR CAN可以匹配换行符<CR>和<LF>并继续匹配后续行。 但搜索字符串必须在命令行上指定,新的行字符必须在变量中,并且值必须通过延迟扩展传递。

另一个复杂因素是FOR循环的IN()子句在单独的隐式CMD会话中执行,并且必须重新启用延迟扩展。 另外,! 字符必须转义,才能进入第二个CMD会话。

这个小小的测试脚本可以做到。

@echo off setlocal enableDelayedExpansion if "%~1"==":doSearch" goto :doSearch ::Define a variable as a LineFeed (0x0A) character set LF=^ :: The above 2 blank lines MUST be preserved! ::Define a CR variable as a CarriageReturn (0x0D) character for /f %%a in (''copy /Z "%~dpf0" nul'') do set "CR=%%a" set file="test.txt" for /f "delims=" %%A in (''cmd /v:on /c^"findstr /rc:"Item No. .*^!CR^!*^!LF^!.* Exception: " %file%^"'') do ( set "ln=%%A" set "item=!ln:*Item No. =!" echo Item No. !item! had an exception ) exit /b

编辑2015-01-11

我只是重读这个问题,并意识到我错了。 OP要求在前一行出现异常字符串的项目编号(看后面的搜索),但是我的解决方案只能找到后续行中出现异常的项目编号(向前搜索)。

不幸的是,FINDSTR没有办法让后面的搜索一下。

在大多数情况下,我会删除上面的答案,因为它不回答这个问题。 但是,这个答案确实记录了一个前所未有的新颖FINDSTR功能,可能非常有用。 展望功能在概念上足够接近于后面的功能,有人需要它可以通过这个问题找到答案,所以我打算保留它。

我确实有一个纯粹的基于脚本的解决方案,可以从XP以后的任何Windows机器上运行,但不使用FINDSTR。 JREPL.BAT是一个正则表达式命令行,可以很容易地提取所需的项目编号。

jrepl "Item No. (d+)rn.* Exception: " $1 /m /jmatch /f test.txt

我看了一下findstr文档 ,我认为它不能做多行搜索。

也许你应该使用更高级的工具,比如awk,或者某些版本的grep似乎也支持多行的正则表达式。

你可以看看stackoverflow.com/questions/152708/

如果您使用的是Vista或Windows 7(或者如果您在XP上手动安装),则可以使用PowerShell进行以下操作:

$resultlist = new-object System.Collections.Specialized.StringCollection $regex = [regex] ''(?m)^.*Exception.*rn.*Item No. (d+)'' $match = $regex.Match($subject) while ($match.Success) { $resultlist.Add($match.Groups[1].Value) | out-null $match = $match.Nextmatch() }

$resultlist将包含一个所有项目编号的列表,其中包含Exception中的一行。

如果您可以下载工具,可以使用下面的Ruby for Windows命令。

C:work>ruby -ne "print gets.split.last if /Exception/" file 23423 C:work>type file Timestamp: Order received for Item No. 26551 Timestamp: Exception: OutOfRangeException Timestamp: Message: Inventory Item is not stock. Item No. 23423 Timestamp: Order received for Item No. 23341 C:work>ruby -ne "print gets.split.last if /Exception/" file 23423

总结

以上是小编为你收集整理的如何使用新行正则expression式使用findstr全部内容。

如果觉得小编网站内容还不错,欢迎将小编网站推荐给好友。

Bash的正则expression式不接受斜杠

Bash的正则expression式不接受斜杠

我是相当新的bash shell脚本(和Linux太)…我尝试做一个简单的脚本,涉及到一个由用户键盘给出的string的正则expression式。

clear read -p "Insert e-mail > " if [[ $REPLY =~ ^[.] ]] then echo "ERROR (code 1): e-mail cannot start with "."" elif [[ $REPLY =~ .[.]$ ]] then echo "ERROR (code 2): e-mail cannot end with "."" else if [[ $REPLY =~ ^[0-9][0-9a-zA-Z!#$%^&'*+-]+$ ]] #THIS IS WHERE I NEED HELP then echo "Good!" else echo "Bad!" fi fi

所以我想要做的是做一个正则expression式

所以用户不能从头开始。 或结束。 (我几乎这样做,它的工作)…

接下来我想做的是让string以数字开头,我用^ [0-9](我认为这是正确的)

之后..string可以是数字0-9或字母az和AZ或下一个字符:#$%^&'* + – /

所以当用户input1&(它以数字开头,其余的是可接受的字符),但它不工作..因为它需要是&(在正则expression式公式)。

接下来同样的问题发生了字符'我做了什么,是添加一个反斜杠正则expression式公式(),它的工作..

然后我试图做同样的/字符(斜杠字符),所以我做的是添加反斜杠/(反斜杠斜杠),但是当用户input1 /(它以数字开始,其余是可接受的字符),不幸的是它打印“坏!” 它应该打印好!

为什么会这样呢?

我试过 /和 / /但仍然…不能理解为什么它不工作!

Bash – replace斜线

有没有一个基于GNU Windows的文本编辑器,使用完整的正则expression式与伟大的文档查找replace?

node.js不能识别express

在FINDSTR中使用子模式

简单.htaccessredirect:如何redirect参数?

问题是存在的! 在你正在做历史扩张的角色班上。

我建议像这样预先声明你的正则表达式:

re="^[0-9][0-9a-zA-Z!#$%^&/*'+-]+$"

然后用它作为:

s='1/' [[ $s =~ $re ]] && echo "good" || echo "bad" good

其实,在字符类工作就好了:

$ [[ "1/" =~ ^[0-9][/]+$ ]]; echo $? 0

C# – 与if语句使用正则expression式

C# – 与if语句使用正则expression式

我有一些代码检查字段input反对正则expression式,虽然由于某种原因(不pipe我放在领域,它返回flase。有什么我已经错过了?

private void textBox5_Validating(object sender,CancelEventArgs e) { String AllowedChars = @"^a-zA-Z0-9.$"; if (Regex.IsMatch(textBox5.Text,AllowedChars)) { MessageBox.Show("Valid"); } else { MessageBox.Show("Invalid"); } }

在W10通用应用程序中从资源文件夹播放audio

Windows服务中的关键事件处理C#

在Windows中检测文件“copY”操作

如何在尝试Process.Start()之前以编程方式检查文件是否存在文件关联?

如何刷新未决的FileSystemWatcher事件?

正则表达式对我来说没有意义。 这一个会(注意用于定义字母表的方括号):

String AllowedChars = @"^[a-zA-Z0-9]*$";

你想要的是组合这些字符,并允许0或更多:

@"^[a-zA-Z0-9.]*$"

否则,你发布的内容只允许“a-zA-Z0-9”和一个字符。

可能是不正确的正则表达式。 也许你的意思是:

String AllowedChars = @"^[a-zA-Z0-9]*$";

这将允许任何数字(包括没有)的字母数字字符。 我已经删除了期限(匹配任何字符),因为在这种情况下没有多大意义。

C# – 使用正则expression式与TextBox.Validating

C# – 使用正则expression式与TextBox.Validating

而不是使用if(numberEntered <1 || numberEntered> 24),是否可以使用正则expression式来检查字段是否是24小时制格式,例如23:00。

private void textBox4_Validating(object sender,CancelEventArgs e) { { int numberEntered; if (int.TryParse(textBox4.Text,out numberEntered)) { if (numberEntered < 1 || numberEntered > 28) { MessageBox.Show("You have to enter a number between 1 and 28"); textBox4.Text = 5.ToString(); } } else { MessageBox.Show("You need to enter an integer (number)"); textBox4.Text = 5.ToString(); } }

GetShortPathNameA不能在C#中工作

如何使用log4net xml configurator在Windows中使用文件夹位置指定日志文件path?

GetSystemTimeZones缺lessGMT标准时间

将WPF应用程序分发给传统用户群:它有多无缝?

.NET – 从代码中设置电源选项

string time = "23:00"; var time24 = new Regex(@"^(20|21|22|23|[01]d|d)(([:][0-5]d){1,2})$"); bool is24hTime = time24.IsMatch(time);

可能会工作,但我认为DateTime.TryParse是要走的路。

可能吗? 是。 这是首选吗? 没有。最好是将字符串解析为一个整数,然后像当前那样使用正则表达式进行验证。 正则表达式并没有真正做你所要求的,所以得到的正则表达式会很尴尬。

使用http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextBox.aspx

正如乔纳斯所说,使用DateTime.TryParse比使用正则表达式更可取,但是,您可能需要考虑使用DataTimePicker控件。

如果将Format属性设置为Custom ,然后将CustomFormat属性设置为HH:mm ,则会得到一个类似控件的文本框,将输入限制为24小时。

最后,如果将Showupdown设置为true ,则不再可以看到日历,而是显示updown。

C# – 文件path的正则expression式,例如C: test  test.exe

C# – 文件path的正则expression式,例如C: test test.exe

我目前正在寻找一个正则expression式,可以帮助validation文件path例如:

C:testtest2test.exe

Windows资源pipe理器在应用程序调用Web服务时不响应

等待networkingconfiguration在Windows服务启动完成

Windows Update API c#:设置下载位置

如何检测Windows 8操作系统使用C#4.0?

调用“运行”命令

我决定发表这个使用正则表达式的答案。

^(?:[a-zA-Z]:|\\[w.]+\[w.$]+)\(?:[w]+\)*w([w.])+$

适用于这些:

\testtest$TEST.xls \serversharefoldermyfile.txt \serversharemyfile.txt \123.123.123.123sharefoldermyfile.txt c:foldermyfile.txt c:foldermyfileWithoutExtension

编辑:添加示例用法:

if (Regex.IsMatch (text,@"^(?:[a-zA-Z]:|\\[w.]+\[w.$]+)\(?:[w]+\)*w([w.])+$")) { // Valid }

*编辑:*这是您可以看到的路径的近似值。 如果可能的话,最好使用Path类或FileInfo类来查看文件或文件夹是否存在。

如果你的目标是处理文件名,我会推荐使用Path类而不是Regex。

例如,您可以调用Path.GetFullPath来“验证”一个路径,因为如果路径包含无效字符,则会引发ArgumentException ,如果路径太长,则会引发其他异常。等等。这将处理所有规则,这将很难得到正确的正则表达式。

提议的不是很好,这是我为XSD构建的,它是Windows特有的:

^(?:[a-zA-Z]:(\|/)|file://|\\|.(/|\))([^\/:*?<>"|]+(\|/){0,1})+$

试试这个用于Windows和Linux的支持: ((?:[a-zA-Z]:){0,1}(?:[\/][w.]+){1,})

我使用这个正则表达式在windows(包括UNC和%变量%)中捕获有效的文件/文件夹路径,排除根路径如“C:”或“\ serverName”

^(([a-zA-Z]:|\\w[ w.]*)(\w[ w.]*|\%[ w.]+%+)+|%[ w.]+%(\w[ w.]*|\%[ w.]+%+)*)

这个正则表达式不匹配路径元素中的前导空格,所以

“C: program files”被匹配

“C: pathWithLeadingSpace”不匹配

变量在任何级别都是允许的

“%program files%”被匹配

“C:我的路径与内部空间%我var与内部空间%”匹配

regex CmdPrompt("^([AZ]:[^<>:"|?*]+>)");

基本上,我们查找不在禁止的Windows路径字符列表中的所有内容:

< (less than) > (greater than) : (colon) " (double quote) | (vertical bar or pipe) ? (question mark) * (asterisk)

这是Windows路径的正则表达式:

(^([az]|[AZ]):(?=\(?![-37<>:"/\|?*])|/(?![-37<>:"/\|?*])|$)|^\(?=[\/][^-37<>:"/\|?*]+)|^(?=(\|/)$)|^.(?=(\|/)$)|^..(?=(\|/)$)|^(?=(\|/)[^-37<>:"/\|?*]+)|^.(?=(\|/)[^-37<>:"/\|?*]+)|^..(?=(\|/)[^-37<>:"/\|?*]+))((\|/)[^-37<>:"/\|?*]+|(\|/)$)*()$

这是为UNIX / Linux路径

^/$|(^(?=/)|^.|^..)(/(?=[^/])[^/]+)*/?$

这是我的测试:

Win Regex

Unix正则表达式

这些使用Javascript

编辑我已经添加了相对路径,(../,./,../something)

我发现这里的大部分答案都是一个小小的失误。

在这里找到一个很好的解决方案

https://social.msdn.microsoft.com/forums/vstudio/en-US/31d2bc84-c948-4914-8a9d-97b9e788b341/validate-a-network-folder-path

注意* – 这只适用于网络共享 – 不是本地文件

回答:

string pattern = @"^\{2}[w-]+(\{1}(([w-][w-s]*[w-]+[$$]?)|([w-][$$]?$)))+"; string[] names = { @"\my-networksomelocation",@"\my-network\somelocation",@"\my-networksomelocation",@"my-networksomelocation",@"\my-networksomelocationaadd",@"\my-network\somelocation"}; foreach (string name in names) { if (Regex.IsMatch(name,pattern)) { Console.WriteLine(name); //Directory.Exists function to check if file exists } }

亚历山大的答案+相对路径

亚历山大迄今为止的答案是最正确的,因为它支持文件名中的空格(即C:Program Files (x86)将匹配)…这也包括相对路径。

例如,您可以执行cd /或cd 并执行相同的操作。

此外,如果您目前在C:somepathtosomeplace并且键入了其中的任何一个命令,则最终会在C:

更重要的是,你应该考虑以'/'开头的路径作为根路径(到当前驱动器)。

(?:[a-zA-Z]:(|/)|file://|\|.(/|)|/) ([^,/:*?<>"|]+(|/){0,1})

然而,亚历山大的答案的修改版本,我们包括相对路径,没有领先/或驱动器号,以及/没有前导驱动器号(相对于当前驱动器作为根)。

今天关于如何使用新行正则expression式使用findstr正则表达式 行尾的分享就到这里,希望大家有所收获,若想了解更多关于Bash的正则expression式不接受斜杠、C# – 与if语句使用正则expression式、C# – 使用正则expression式与TextBox.Validating、C# – 文件path的正则expression式,例如C: test test.exe等相关知识,可以在本站进行查询。

本文标签: