我正在编写一个C#应用程序,对大量文本(约2500万个字符串)进行多个正则表达式(约10个)匹配。我尝试了谷歌搜索,但是与“减慢”有关的正则表达式教程都是关于如何使用反向引用等技术,而不是解决匹配速度变慢的问题。我认为这不是我的问题,因为我的正则表达式一开始非常快,但最后变得很慢。
前100万个字符串,运行正则表达式每1000个字符串大约需要60毫秒。到最后,速度大约会减慢到600毫秒。有人知道原因吗?
我曾经使用
但我有些正则表达式需要根据用户名称的不同而有所变化,例如有些是
有没有什么建议?
前100万个字符串,运行正则表达式每1000个字符串大约需要60毫秒。到最后,速度大约会减慢到600毫秒。有人知道原因吗?
我曾经使用
RegEx
的实例代替缓存版本,并编译了能够编译的表达式,这些改进使改善了性能。但我有些正则表达式需要根据用户名称的不同而有所变化,例如有些是
mike said (\w*)
或john said (\w*)
。我所理解的是不可能编译这些正则表达式并传递参数(例如saidRegex.Match(inputString, userName)
)。有没有什么建议?
var myRegex = new Regex(string.Format("{0}.*(?:and spent|and paid).*[\\$£](\\d+[\\.,]?\\d{{0,2}})", Regex.Escape(playerName)), RegexOptions.None);
我在像这样的字符串上运行它:"Mike went into the supermarked and spent $1.57" 我想知道是不是Mike花了钱以及他花了多少。 - mike1952(/w*)(?:and spent|and paid).*[\\$£](\\d+[\\.,]?\\d{{0,2}})
然后将第一个捕获组与已知的名称进行匹配,但速度明显变慢。 - mike1952