Вы можете рассмотреть регулярное выражение типа
(?i)(?:©(?:\s*Copyright)?|Copyright(?:\s*©)?)\s*\d+(?:\s*-\s*\d+)?\s*(.*?(?=\W*All\s+rights\s+reserved)|[^.]*(?=\.)|.*)
См. Демонстрацию регулярных выражений . Используйте вместе с ним модификатор без учета регистра, re.I
.
Подробности
(?:©(?:\s*Copyright)?|Copyright(?:\s*©)?)
- либо ©(?:\s*Copyright)?
- ©
char, за которыми следует необязательная подстрока из 0+ пробелов, а затем [ 117] |
- или Copyright(?:\s*©)?
- Copyright
, за которыми следует необязательная подстрока из 0+ пробелов и ©
char \s*
- 0+ пробелов \d+
- 1+ цифр (используйте \d{4}
, если годы всегда содержат 4 цифры) (?:\s*-\s*\d+)?
- необязательная последовательность -
заключено в 0+ пробелов и затем 1+ цифр (используйте \d{4}
, если годы всегда содержат 4 цифры) \s*
- 0+ пробелов (.*?(?=\W*All\s+rights\s+reserved)|[^.]*(?=\.)|.*)
- [ 1147] Захват группы 1 : любая из альтернатив: .*?(?=\W*All\s+rights\s+reserved)
- любые 0+ символов, кроме символов разрыва строки, возможно меньшее количество, вплоть до 0+ несловарных символов, сопровождаемых All rights reserved
строка [^.]*(?=\.)
- любые 0+ символов, кроме .
, как можно больше, вплоть до .
, не включая .
.*
- остальные линия [112 8] Демонстрация Python :
import re
s = "Copyright © 2019 Apple Inc. All rights reserved.\r\n© 2019 Quid, Inc. All Rights Reserved.\r\n© 2009 Database Designs \r\n© 2019 Rediker Software, All Rights Reserved\r\n©2019 EVOSUS, INC. ALL RIGHTS RESERVED\r\n© 2019 Walmart. All Rights Reserved.\r\n© Copyright 2003-2019 Exxon Mobil Corporation. All Rights Reserved.\r\nCopyright © 1978-2019 Berkshire Hathaway Inc.\r\n© 2019 McKesson Corporation\r\n© 2019 UnitedHealth Group. All rights reserved.\r\n© Copyright 1999 - 2019 CVS Health\r\nCopyright 2019 General Motors. All Rights Reserved.\r\n© 2019 Ford Motor Company\r\n©2019 AT&T Intellectual Property. All rights reserved.\r\n© 2019 GENERAL ELECTRIC\r\nCopyright ©2019 AmerisourceBergen Corporation. All Rights Reserved.\r\n© 2019 Verizon\r\n© 2019 Fannie Mae\r\nCopyright © 2018 Jonas Construction Software Inc. All rights reserved.\r\nAll Comments © Copyright 2017 Kroger | The Kroger Co. All Rights Reserved\r\n© 2019 Express Scripts Holding Company. All Rights Reserved. 1 Express Way, St. Louis, MO 63121\r\n© 2019 JPMorgan Chase & Co.\r\nCopyright © 1995 - 2018 Boeing. All Rights Reserved.\r\n© 2019 Bank of America Corporation. All rights reserved.\r\n© 1999 - 2019 Wells Fargo. All rights reserved. NMLSR ID 399801\r\n©2019 Cardinal Health. All rights reserved.\r\n© 2019 Quid, Inc All Rights Reserved."
rx = r"(?:©(?:\s*Copyright)?|Copyright(?:\s*©)?)\s*\d+(?:\s*-\s*\d+)?\s*(.*?(?=\W*All\s+rights\s+reserved)|[^.\n]*(?=\.)|.*)"
for m in re.findall(rx, s, re.I):
print(m)
Вывод:
Apple Inc
Quid, Inc
Database Designs
Rediker Software
EVOSUS, INC
Walmart
Exxon Mobil Corporation
Berkshire Hathaway Inc
McKesson Corporation
UnitedHealth Group
CVS Health
General Motors
Ford Motor Company
AT&T Intellectual Property
GENERAL ELECTRIC
AmerisourceBergen Corporation
Verizon
Fannie Mae
Jonas Construction Software Inc
Kroger | The Kroger Co
Express Scripts Holding Company
JPMorgan Chase & Co
Boeing
Bank of America Corporation
Wells Fargo
Cardinal Health
Quid, Inc
Я предполагаю, что вы имеете в виду время Unix , которое определяется как число секунд с полуночи (UTC) 1 января 1970 года.
public static DateTime FromUnixTime(long unixTime)
{
return epoch.AddSeconds(unixTime);
}
private static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
Так как.Net 4.6 и выше используйте DateTimeOffset. Теперь. ToUnixTimeSeconds ()
Для не волнения об использовании миллисекунд или секунды, просто сделайте:
public static DateTime _ToDateTime(this long unixEpochTime)
{
DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc);
var date = epoch.AddMilliseconds(unixEpochTime);
if (date.Year > 1972)
return date;
return epoch.AddSeconds(unixEpochTime);
}
, Если время эпохи находится в секундах затем, нет никакого способа, которым можно передать миллисекунды добавления 1972 года.