diff --git a/src/PSUSensorMain.cpp b/src/PSUSensorMain.cpp
index 0f7d17e..83c0c58 100644
--- a/src/PSUSensorMain.cpp
+++ b/src/PSUSensorMain.cpp
@@ -33,6 +33,7 @@
 #include <iostream>
 #include <regex>
 #include <string>
+#include <string_view>
 #include <utility>
 #include <variant>
 #include <vector>
@@ -175,14 +176,28 @@
     boost::container::flat_map<std::string, std::vector<std::string>>&
         eventPathList)
 {
+    auto attributePartPos = sensorPathStr.find_last_of('_');
+    if (attributePartPos == std::string::npos)
+    {
+        // There is no '_' in the string, skip it
+        return;
+    }
+    auto attributePart =
+        std::string_view(sensorPathStr).substr(attributePartPos + 1);
+    if (attributePart != "input")
+    {
+        // If the sensor is not xxx_input, skip it
+        return;
+    }
+
+    auto prefixPart = sensorPathStr.substr(0, attributePartPos + 1);
     for (const auto& limitMatch : limitEventMatch)
     {
         const std::vector<std::string>& limitEventAttrs = limitMatch.second;
         const std::string& eventName = limitMatch.first;
         for (const auto& limitEventAttr : limitEventAttrs)
         {
-            auto limitEventPath =
-                boost::replace_all_copy(sensorPathStr, "input", limitEventAttr);
+            auto limitEventPath = prefixPart + limitEventAttr;
             std::ifstream eventFile(limitEventPath);
             if (!eventFile.good())
             {
